我有一个简单的复选框,点击它将XHR发送到PHP页面,php正确处理,我使用json_encode($response)
返回。但是,不是简单的真或假,我得到页面的源代码,当然它导致“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数组。
答案 0 :(得分:3)
只需快速检查,您是否将<?php
放在php文件的开头?
答案 1 :(得分:1)
那,或者你在网络服务器上做错了什么,没有正确地将文件传递给php。是否直接加载源文件或结果?
如果你点击了page.php,它是否加载了与你点击page.phP或pHP等相同的东西?对Web服务器过滤器很重要,具体取决于Web服务器......
如果你使用tomcat for java,例如......你可以关闭查找文件的区分大小写,但它不会关闭将文件映射到过滤器或servlet的区分大小写,所以.jsp会加载jsp servlet,但.jsP不会。