2

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

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

在此处输入图像描述

4

1 回答 1

1

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

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

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

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));

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

于 2012-04-10T05:30:39.100 回答