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

时间:2012-04-10 05:24:17

标签: php javascript jquery mysql ajax

我目前正在使用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; 

如果您有任何问题或意见,请与我们联系,谢谢。

enter image description here

1 个答案:

答案 0 :(得分: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);
}

EDIT2: 并且有你的问题 - 你的ajax不仅返回json数据,而且还有php警告,现在我看到你的问题在哪里 - 你在插入后删除数据

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

现在我很快就没有注意到它......