我正在进行一个ajax调用,以便从数据库中获取一条记录。我在控制台中看到,它成功地返回了记录,但成功的原因是函数没有被执行。
function ajaxForParent() {
var search = document.getElementById("resourceId").value;
var folderId = document.getElementById("folderId").value;
$.ajax({
type : "GET",
contentType : 'application/json; charset=utf-8',
dataType : 'json',
url : "/admin/content/changeParent",
data : {search : search, folderId : folderId}, // Note it is important
success : function(folder) {
alert(folder);
if (folder.id == document.getElementById("folderId").value) {
$("#parentAvailable").html("Children Limit exceeding you cannot add more than 9 levels children");
return false;
}
console.log(folder.id);
console.log(document.getElementById("folderId").value);
if (folder.id != document.getElementById("folderId").value) {
console.log("I am coming here " +folder.id);
var s = document.getElementById("folderId");
s.value = folder.id;
}
$("#parentAvailable").html("Parent Found Successfully!");
},
error : function(content) {
$("#parentAvailable").html("Parent Not available");
}
});
}
我已经尝试了上面的方法,它总是进入错误函数,即使记录从服务器端成功返回。有人能告诉我我哪里做错了吗?
当我抛出这个错误时,我会得到这样的结果
SyntaxError: JSON.parse: end of data after property value in object at line 1 column 1587309 of the JSON data
发布于 2015-06-27 02:37:59
您不能通过GET发送json
数据。您需要使用POST
$.ajax({
type : "POST", // <------ Use POST
contentType : 'application/json; charset=utf-8',
dataType : 'json',
url : "/admin/content/changeParent",
data : {search : search, folderId : folderId},
如果您的应用程序/admin/content/changeParent
只接受GET,您可能需要考虑将其更改为接受POST。否则,您的应用程序将无法接收您通过GET正确发送到服务器的JSON数据。
发布于 2015-06-27 02:37:45
该响应看起来包含格式不正确的json数据。尝试将响应复制到http://jsonlint.com/等json linter中以查找问题。
发布于 2015-06-27 02:38:11
获取您的服务器答案并将其粘贴到某个json linter (如http://jsonlint.com/)中,以确保jquery可以将其转换为有效的响应。
您还可以将断点放入错误回调中,并检查当时返回的错误和值。在那里,如果接收到的数据是字符串而不是对象,请尝试调用JSON.parse(/* your server response */)来测试它是否正常工作,以及是否收到任何额外的错误。
https://stackoverflow.com/questions/31079814
复制相似问题