jquery ajax 200 OK JSON.ParseError
我有一个控件,它有一个文本框,当它的内容发生变化时,会使这个javascript函数变得棘手:
page
参数是document.URL
因为控件没有附加.asxc页面, fieldValue
是文本框的值。
function UpdateFieldsOnListSelection(page, fieldValue) { $.ajax({ type: "POST", url: page + "/IsSelectedListPictureLibrary", data: { "libraryInfo": fieldValue }, contentType: "application/json; charset=utf-8", dataType: "json", success: function (data) { alert("Success!"); }, error: function (jqXHR, textStatus, errorThrown) { alert("jqXHR: " + jqXHR.status + "\ntextStatus: " + textStatus + "\nerrorThrown: " + errorThrown); } }); };
它一直在抛出这个错误:
jqXHR:200
textStatus:parsererror
errorThrown:SyntaxError:JSON.parse:意外字符
IsSelectedListPictureLibrary
的代码:
[WebMethod] public static bool IsSelectedListPictureLibrary(string libraryInfo) { if (string.IsNullOrEmpty(libraryInfo)) return false; var common = new Utility(); var storedLibraryInfo = common.GetStoredLibraryInfo(libraryInfo); if (storedLibraryInfo == null) return false; var web = SPContext.Current.Site.OpenWeb(storedLibraryInfo.WebId); var spList = web.Lists[storedLibraryInfo.LibraryId]; if (spList.BaseTemplate == SPListTemplateType.PictureLibrary) { web.Dispose(); return true; } web.Dispose(); return false; }
我已经尝试将ajax中的json
更改为jsonp
,但发生了同样的错误。
我尝试改变data
格式。
有任何想法吗?
尝试从Ajax参数中删除contentType
和dataType
,并自动识别它们
与AJAX的’post’命令有同样的问题。
发送了一个JSON post请求,获得了200 OK repsponse,但textStatus是parseerror
,errorThrown是SyntaxError: JSON.parse: unexpected character
。
这是我的JS代码:
$.post(url, JSON.stringify(reportVarsJson), function(response) {}, 'json') .fail(function(jqXHR, textStatus, errorThrown) { alert('Error saving report request variables:\n\n' + jqXHR.responseText); });
结果问题是我的服务器视图(Django)返回了一个空响应,而不是JSON响应。
我改变了我的服务器视图以返回一个空的json响应,一切正常!
不确定[WebMethod],但似乎存在问题,并且它与该方法的输出有关。 它必须是一个格式良好的JSON,以便ajax方法起作用。 所以我要做的是在一个单独的窗口中检查调用以查看响应并使用类似http://jsonlint.com/的内容来确保它的格式正确。