JSON Stringify & AJAX parse errors


JSON Stringify & AJAX parse errors

我已经尝试了几个小时,尝试了我在网上可能找到的所有建议,但它仍然失败。当我使用 JSON.stringify 对函数参数进行编码,然后通过 AJAX 将其传递给我的 PHP 处理程序时,我收到一个警报弹出窗口,说解析器错误。

这显然是Javascript中的一个问题,但我目前无法确定在哪里。

谁能发现我在这里做错了什么?

            // JSON Encode to pass via AJAX to PHP
            var params = { "id": player };
            var params2 = JSON.stringify(params);
            // {"id":"939952da-23df-4ff1-b66c-61018b621645"}
            console.log(params2);
            cellOptions.innerHTML = "<button onclick='sendAction('"kickPlayer'"," + params2 + ")'>Kick</button>";

阿贾克斯

function sendAction(cmd, params)
{
    $.ajax({
        type: "POST",
        url: "handler.php",
        data: { 'action': cmd, 'params': params },
        dataType: 'json',
        success: function(data)
        {
            if (data['status'] == 'failed')
            {
            }
            else if (data['status'] == 'success')
            {
            }
        },
        error: function(XMLHttpRequest, textStatus, errorThrown)
        { 
            alert("Status: " + textStatus); alert("Error: " + errorThrown); alert("Message: " + XMLHttpRequest.responseText);
        }
    });
};

通过编码:

dataType: 'json',

你告诉jQuery在响应中期望一个JSON字符串(来自后端,即我们的PHP代码)。因此,在回调时,jQuery 会解析字符串,并且由于您没有从后端接收到有效的 JSON 字符串,因此它无法解析它,并抛出此解析器错误。

编辑:参见jQuery文档:

 dataType (default: Intelligent Guess (xml, json, script, or html))

类型:字符串 期望从服务器返回的数据类型。

从 http://api.jquery.com/jquery.ajax/

将参数传递给 sendAction 函数之前,不要将它们字符串化。

而是字符串化您发送到服务器的整个对象。

data: JSON.stringify({ 'action': cmd, 'params': params }),