我已经花了好几个小时尝试在网上建议的所有内容,但它仍然失败。当我用JSON.stringify编码函数参数然后通过AJAX将它传递给我的PHP处理程序时,我收到一个警告弹出窗口说parsererror。
这显然是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>";
AJAX
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);
}
});
};
答案 0 :(得分:1)
通过编码:
dataType: 'json',
你告诉jQuery在响应中期望一个JSON字符串(来自后端,即我们的PHP代码)。所以在回调中,jQuery解析字符串,因为你没有从后端接收到有效的JSON字符串,所以它无法解析它,并抛出了这个解析器错误。
编辑:请参阅jQuery文档:
dataType (default: Intelligent Guess (xml, json, script, or html))
类型:字符串您希望从服务器返回的数据类型。
答案 1 :(得分:0)
在将params传递给sendAction函数之前,请不要对其进行字符串化。
相反,将您发送到服务器的整个对象进行字符串化。例如
data: JSON.stringify({ 'action': cmd, 'params': params }),