以前曾经问过,但没有其他答案可行或适用于这种情况。我将JSON数据发送到后端,然后发送回复。
但是,它永远不会触发调用的成功功能,尽管数据会传递到服务器并且后端进程会成功。我似乎无法找到问题。
我凌乱的功能:
RegistrationForm.prototype.sendCode = function(url, error) {
if (accessCode){
return $.ajax({
url: url,
type: 'POST',
data: JSON.stringify({"vouchercode": accessCode}),
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function(data){
//success case here. never fires
},
error: function(xhr, ajaxOptions, err, error){
console.log(err);
console.log(accessCode);
}
});
}
错误:
SyntaxError: Unexpected token <
这是AJAX错误函数中console.log(err)
的输出。
答案 0 :(得分:0)
请求返回一些无效的数据json。存在'&lt;'表示html或xml。如果发生内部错误,它可能是服务器默认错误页面。
您可以在大多数浏览器中检查请求返回数据。在Chrome中,它是F12,然后是“网络”选项卡。
答案 1 :(得分:0)
dataType
是您期望从服务器返回的内容。你告诉jQuery,服务器将发送JSON,但显然它发送HTML(<!DOCTYPE...
),因此错误。
将dataType
设为html
或text
。
答案 2 :(得分:0)
错误表明响应是html。所以,只需删除dataType: 'json'
,jQuery就应该将其解析为html,它应该可以正常工作。
请遵循以下
如果您真的对json做出回应,那么很有可能将其格式化为
<pre>{json here}</pre>
因此,删除dataType: 'json'
并在成功处理程序中,执行以下更改
success: function(data){
var obj = JSON.parse($(data).text());
}