为什么我的json响应是一个充满源代码的页面

时间:2011-07-26 19:12:46

标签: php jquery json post

我有一个简单的复选框,点击它将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数组。

2 个答案:

答案 0 :(得分:3)

只需快速检查,您是否将<?php放在php文件的开头?

答案 1 :(得分:1)

那,或者你在网络服务器上做错了什么,没有正确地将文件传递给php。是否直接加载源文件或结果?

如果你点击了page.php,它是否加载了与你点击page.phP或pHP等相同的东西?对Web服务器过滤器很重要,具体取决于Web服务器......

如果你使用tomcat for java,例如......你可以关闭查找文件的区分大小写,但它不会关闭将文件映射到过滤器或servlet的区分大小写,所以.jsp会加载jsp servlet,但.jsP不会。