JQuery Ajax 更新 MySQL 数据库,但没有运行成功函数

Posted

技术标签:

【中文标题】JQuery Ajax 更新 MySQL 数据库,但没有运行成功函数【英文标题】:JQuery Ajax Updating MySQL Database, But Not Running Success Function 【发布时间】:2012-04-22 10:22:51 【问题描述】:

我目前正在使用 JQuery ajax 函数来调用外部 php 文件,我在该文件中选择并添加数据库中的数据。完成后,我在 javascript 中运行一个成功函数。奇怪的是,调用ajax时数据库正在成功更新,但是成功函数没有运行。这是我的代码:

<!DOCTYPE html>
<head>
<script type="text/javascript" src="jquery-1.6.4.js"></script>
</head>
<body>
<div onclick="addtask();" style="width:400px; height:200px; background:#000000;"></div>
<script>
function addtask() 
var tid = (Math.floor(Math.random() * 3)) + 1;
var tsk = (Math.floor(Math.random() * 10)) + 1;

if(tsk !== 1) 
    $.ajax(
    type: "POST",
    url: "taskcheck.php",
    dataType: "json",
    data: taskid:tid,
    success: function(task) alert(task.name);
    );



</script>
</body>
</html>

还有 PHP 文件:

session_start(); 

$connect = mysql_connect('x', 'x', 'x') or die('Not Connecting'); 
mysql_select_db('x') or die ('No Database Selected'); 

$task = $_REQUEST['taskid']; 
$uid = $_SESSION['user_id']; 

$q = "SELECT task_id, taskname FROM tasks WHERE task_id=" .$task. " LIMIT 1"; 
$gettask = mysql_fetch_assoc(mysql_query($q)); 

$q = "INSERT INTO user_tasks (ut_id, user_id, task_id, taskstatus, taskactive) VALUES (null, " .$uid. ", '$gettask['task_id']', 0, 1)"; 
$puttask = mysql_fetch_assoc(mysql_query($q)); 

$json = array( 
    "name" => $gettask['taskname'] 
); 

$output = json_encode($json); 
echo $output; 

如果您有任何问题或 cmets,请告诉我,谢谢。

【问题讨论】:

使用开发者工具或 Firebug 的网络面板查看请求发生了什么。 【参考方案1】:

我相信它会运行,但由于错误而不会显示警报 -

success: function(task) alert(task.name); 

你必须先用jQuery.parseJSON()解码JSON,任务只是一个字符串 它应该看起来像这样

function(m)
        
            var task = jQuery.parseJSON( m );
            alert(task['name']);
        

编辑: 好的 ... 尝试在浏览器中使用开发人员工具并在成功函数上放置断点,如果它甚至没有午餐尝试为您的 ajax 调用添加错误回调

error: function(xhr, exc)

   alert(xhr.status);
   alert(exc);

编辑2: 还有你的问题 - 你的 ajax 不仅返回 json 数据,而且还返回 php 警告,现在我知道你的问题在哪里 - 你在插入、删除后获取数据

$puttask = mysql_fetch_assoc(mysql_query($q));

现在我为没有早点注意到它而感到难过......

【讨论】:

dataType: "json" 应该负责解码。 添加该代码没有任何区别。我在代码的其他部分中使用了各种 ajax json 调用,并且成功函数工作得很好。只是不是这个:/ 好的,对于 xhr.status 警报,我得到 '200' 和 exc 'parsererror' hmm ...解析json可能有问题,尝试切换到datatype: "text"并使用我的第一个解决方案,或者只是alert(m);看看它返回了什么 警报仍然不会显示,但数据类型为文本且您的代码在上面,错误警报也不会显示。数据库仍在更新中

以上是关于JQuery Ajax 更新 MySQL 数据库,但没有运行成功函数的主要内容,如果未能解决你的问题,请参考以下文章

JQuery Ajax 更新 MySQL 数据库,但没有运行成功函数

使用 datepicker jquery ajax php 更新 mysql 数据库字段

用 jQuery/AJAX 更新 MYSQL

复选框状态更改时如何更新mysql字段?使用 jquery (ajax)、php 和 mysql

单击 HTML img 标签并使用 PDO 使用 jQuery/AJAX 更新 MySQL

ajax调用后jQuery更新li类属性href