0

我需要一些帮助。我正在向服务器发送简单的请求,我期望的返回是 JSON 作为数据类型。但是当我检查开发工具控制台日志时,我得到“parsererror SyntaxError {}”和“parsererror”。

我怎样才能做到这一点?下面是代码。

jQuery

$(':submit').live('click', function() {

    $.ajax({

            type : 'post',        
            url: 'testJSON.php',
            beforeSend:console.log('sending...'),
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            success: function(data){

                console.log(data.status);
                // do magic
                },

            error: function(XMLHttpRequest, textStatus, errorThrown) {

                console.log(textStatus, errorThrown);

                },

            complete: function(XMLHttpRequest, status) {

                console.log(status);

                }

        });

    return false;
    });

这是 testJSON.php

<?php

$data = array(

    "status" => 1,
    "firstname" => "foo",
    "lastname" => "bar",

);

header('Content-type: application/json; charset=utf-8" ');
echo json_encode($data);


exit();

?>

仅供参考,我使用最新版本的 WAMP。非常感谢任何帮助。

4

3 回答 3

1

将内容的标头设置为 json 类型...这里是设置标头类型的示例。

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

从 jQuery 1.4 开始,JSON 数据以严格的方式解析。

拒绝任何格式错误的 JSON 并引发解析错误。

于 2013-04-29T10:55:45.673 回答
0

"从这里删除

header('Content-type: application/json; charset=utf-8" ');

应该

header('Content-type: application/json; charset=utf-8');
于 2013-04-29T10:54:51.080 回答
0

我尝试了您的代码,但在beforeSend参数处出现错误。语句应封装在一个函数中:

...    
beforeSend: function() {console.log('sending...')},
...

之后一切正常。也许它也取决于 jQuery 版本。你用的是哪一个?我尝试使用 1.8.1 及更高版本

于 2013-04-29T11:13:22.170 回答