我有一个简单的复选框,点击它发送XHR到PHP页面,php进程正确,我使用json_encode($response)返回。但是,我得到的不是简单的true或false,而是页面的源代码,它当然会导致"parsererror“。ajax调用,如下所示
$.ajax({
type: "post",
url: "myprocessor.php",
dataType: 'json',
data: { "id" : idnumber, "action": "makeLive", "isLive" : "1" },
beforeSend: function(data) {
$("#ajaxInProgress").addClass('progress');
},
success: function(data) {
$("#status").removeClass().addClass((data.error === true) ? 'error' : 'success').text('Success! Appraiser is NO LONGER Live ').slideDown('slow');
},
error: function(data) {
$("#status").removeClass().addClass('error').text(' - Changing the Live status for this appraiser to "Not Live" has failed - APPRAISER IS STILL LIVE IN SYSTEM, please try again').slideDown('slow');
},
complete: function(data) {
$("#ajaxInProgress").removeClass('progress');
setTimeout(function() {
$("#status").slideUp('slow').removeClass();
},2000);
}
}); 我发布到的php如下:
if (isset($_POST['action'])) {
if($_POST['action']=='makeLive') {
$checkappraiser=mysql_query("SELECT * FROM table WHERE id='".mysql_real_escape_string($_POST['id'])."'");
if (mysql_numrows($checkappraiser)>0) {
$livesetting=mysql_result($checkappraiser,0,"live");
$livesetting=!$livesetting;
$runSql = mysql_query("UPDATE table SET live='$livesetting' WHERE id='".mysql_real_escape_string($_POST['id'])."'");
if(!$runSql) {
$return['error'] = true;
} else {
$return['error'] = false;
}
}
}
echo json_encode($return);
}任何建议都是很棒的。我传递了正确的数据,在DB中更新了正确的数据,我的响应返回为解析器错误,因为它试图将源代码解析为json数组。
发布于 2011-07-27 03:14:46
只是快速检查一下,你在你的php文件的开头放了<?php吗?
发布于 2011-07-27 03:16:57
或者你在你的not服务器上做了一些错误的事情,没有正确地将文件传递给php。点击php文件是直接加载源代码还是结果?
如果你点击page.php,它会加载与你点击page.phP或pHP等相同的东西吗?它对web服务器过滤器很重要,这取决于web服务器...
如果您使用tomcat for java,例如...您可以关闭查找文件时的区分大小写,但它不会关闭将文件映射到筛选器或servlet时的区分大小写,因此.jsp将加载jsp servlet,而.jsP不会。
https://stackoverflow.com/questions/6835257
复制相似问题