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_r,因为您正在请求 json。服务器响应无效。注释掉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 回答