我目前正在使用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;
如果您有任何问题或意见,请与我们联系,谢谢。
答案 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));
现在我很快就没有注意到它......