3

jQuery AJAXを使用しているときに、ステータス200が返されます。ただし、どこかから構文エラーも発生しています。私はこのようにPHPに投稿しています:

function submit_order(orderInformation) {
    $.ajax({
        type: 'post',
        url: 'queries/submit_order.php?<?=time();?>',
        data: 'orderInformation=' + JSON.stringify(orderInformation),
        dataType: 'json',
        success: function (returnedData) {
            console.log(returnedData);
            $('#content_container').fadeOut(340, function () {
                var new_content = $('#content_container').clone(false);
                $('#content_container').remove();
                new_content.css('display', 'none');
                new_content.children().remove();

                new_content.appendTo('body');
                $('#content_container').vkTemplate('templates/confirm_template.tmpl?<?=time()?>', returnedData, function (el, data, context) {
                console.log('success'); 

                    $('#content_container').fadeIn(340);
                });
            });
        },
      error: function (xhr, ajaxOptions, thrownError) {
        console.log(xhr.status);
        console.log(thrownError);
      }
    });
}

私のPHPコードは非常に単純です。

$order_information = json_decode($json_str, true);

//go through the array and make an email out of it
//add a few elements to the array
//send the email

//send back a json string with the added elements
echo json_encode($order_information);

しかし、私はこれを取得します:

エラーのスクリーンショット

そして奇妙なことに、JSON文字列をコピーconsole.log(JSON.stringify(orderInformation))してPHPページに貼り付けると、次のようになります。

$json_str = '{"sector_0":{"file":[],"sector_info":{"sector_label":"NIO","purchase_order":"test","proof":false},"lines":{"line_0":{"description":"test","quantity":"2","productId":"1","addressId":"20","shipViaId":"1","notes":false}}}} ';

すべてが機能します。このエラーは何ですか?エラーでこれがどこ<から来ているのでしょうか?

ありがとう

4

3 に答える 3

4

起動されてログに記録されるのはエラーハンドラです。

  • xhr.status(200)
  • thrownError(構文エラー)

サーバーが戻っても応答が無効なJSONであっても、 $.ajaxwithdataType: jsonはエラーハンドラーを起動することに注意してください。200 OK構文エラーはJavaScriptコードではなく、JSONにあります。<がどこから来ているかを特定し、PHPスクリプトが有効なJSONを送信していることを確認します。

ヒント:コンソールを開き、[ネットワーク]タブを確認します。すべてのXHRは、ヘッダーと本文とともにそこに記録されます。

于 2012-12-13T18:46:51.253 に答える
3

200-サーバーによるOK応答ですhttp://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

応答サーバーに構文エラーがあり、無効なjsonが返されます

PHPコードはうまく機能しているので、何か他のものが必要です。構文エラーまたはフレームワークがhtmlでラップされたjsonを返します...

適切なツールを使用して、サーバーから何が返されるかを確認します。(FirefoxのFirebug / Chromeの開発者ツール)

あなたの画像では0: "<"、それは返された文字列がで始まることを意味します<-それは返されたのはhtmlであることを意味します。

Chromeを使用しているようです。Chromeの[ネットワーク]タブに移動すると、リクエストに対する生の応答が表示されるはずです。

したがって、これはphpエラーです。

$sector_index itarableではありません。var_dumpで確認できますか。それは何ですか?

于 2012-12-13T18:32:37.353 に答える
-2

処理されていないよう<?=time()?>です。確認のために投稿する前に、URLにアラートを送信してください。

于 2012-12-13T18:36:42.850 に答える