2

jQuery を使用して、次の JSON データを作成しました。

[{"name":"date","value":"24-05-2013"},{"name":"omschrijving","value":""}]

これはすべて有効な JSON ですが、jQuery を使用してデータを起動しようとすると、次のエラーが発生します。

予期しないトークン A

ここでは、AJAX 呼び出しを確認できます。

$.ajax({
        type: "POST",
        url: "modules/rma/ajaxhandler.php",
        contentType:"application/json; charset=utf-8",
        data: goededata,
        dataType: 'json',
        succes: function(data) { alert(data); },
            error: function(XMLHttpRequest, textStatus, errorThrown) {
                alert( textStatus + " " + errorThrown); }
    }).done(function() {
    });

ajaxhandler.php には、次の行が含まれています。

<?php
error_reporting(E_ALL);
session_start();

/**
 * Ajaxhandler
 *
 */

print_r($_POST);

echo json_decode($_POST['data']);
?>

送信する必要があるデータは、次の方法で作成されます。

var allFields = $( [] ).add( date ).add( omschrijving ).add( klachtomschrijving ).add(status).add(artikelnummer).add(klantid).add(meldidrepro).add(meldidaankoop).add(leverancier).add(inkoopregelid).add(serienummer);`

var goededata = JSON.stringify(allFields.serializeArray());

このエラーを修正するにはどうすればよいですか?

4

2 に答える 2

10

print_rjsonをリクエストしているため使用できません。サーバー応答が無効です。print_r呼び出しをコメントアウトすると、機能するはずです。

予期しないトークン「a」は、次の出力から取得されますprint_r:

array(
  ...
)

デバッグ用に追加のキーを使用できます。

echo json_decode(array(
  'data' => $_POST['data'],
  'debug' => print_r($_POST, true), // note the second parameter for print_r
));

クライアント側で作業しresponse.data、デバッグ出力は「response.debug」にあります。

しかし、サーバー側のデバッグ出力を単純にファイルに記録しないのはなぜでしょうか?

も問題にerror_reporting(E_ALL);なります。

応答タイプを設定することは常に良い考えです:

header('Content-type: application/json');
于 2013-05-24T14:38:06.427 に答える
3

print_r が、AJAX リクエストからの予想される戻り呼び出しを中断している可能性があります。また、投稿データがスローされた場所もわかりません。ここで起こると予想されるのは、空のアラート ボックスです。私たちのprint_rにコメントしてください

于 2013-05-24T14:38:25.743 に答える