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 の type に設定... ヘッダーのタイプを設定する例を次に示します。

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

あなたのコードを試したところ、beforeSendパラメータでエラーが発生しました。ステートメントは関数にカプセル化されます。

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

その後、すべてが機能しました。jQueryのバージョンにもよるかもしれません。どちらを使用しましたか?バージョン1.8.1以降で試しました

于 2013-04-29T11:13:22.170 に答える
0

"ここから削除

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

する必要があります

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