aspx和jquery.ajax总是返回错误
此代码在mvc2中正常工作,但回到传统的ASPX(因为Sharepoint 2010)。我遇到错误。任何人都可以告诉我我为这个框架做错了什么?aspx和jquery.ajax总是返回错误
这Ajax调用是在$。就绪
$.ajax({
type: "POST",
dataType: "json",
data: 'siteName=a&siteUrl=b',
url: 'Wizard.aspx/DoesNameUrlExist',
beforeSend: function() { alert("before send"); },
complete: function() { alert("complete"); },
success: function (data) { alert("success"); },
error: function (data) {
if ($("meta[name=debug]").attr("content") == "true") {
//Full Error when debugging
var errDoc = window.open();
errDoc.document.write(data.responseText);
errDoc.document.close();
}
else {
// generic error message for production use
alert("An unexpected error occurred.");
} return false;
}
});
代码背后
[WebMethod]
public static string DoesNameUrlExist(string siteName, string siteUrl)
{
//do something
return someString;
}
我得到一个错误每次。
您需要JSON发送到服务,并表明你”再通过contentType
头这样做:
$.ajax({
type: "POST",
contentType: 'application/json',
data: '{"siteName":"a","siteUrl":"b"}',
url: 'Wizard.aspx/DoesNameUrlExist',
beforeSend: function() { alert("before send"); },
complete: function() { alert("complete"); },
success: function (data) { alert("success"); },
error: function (data) {
if ($("meta[name=debug]").attr("content") == "true") {
//Full Error when debugging
var errDoc = window.open();
errDoc.document.write(data.responseText);
errDoc.document.close();
}
else {
// generic error message for production use
alert("An unexpected error occurred.");
} return false;
}
});
此处了解详情:http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
另外,如果您使用jQuery 1.4,则可以删除dataType
。 jQuery will infer JSON automatically based on the response's Content-Type header。
如果您将contentType
声明为json,并且响应内容类型除json外,jQuery中的Ajax调用总会给您一个错误。如果来自WebMethod的响应具有不同的内容(如html或文本),您将始终得到该错误。您可以设置响应类型上你的方法是这样的:
[WebMethod]
[ScriptMethod (UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
public static string DoesNameUrlExist(string siteName, string siteUrl)
的WebMethods之外这也可以实现这样的:
Response.ContentType = "application/json";
由于他正在调用页面方法,因此它确实希望JSON用于输入参数,并且它也会自动在响应中设置“application/json”Content-Type。不需要手动执行此操作。 –
如果你指定它,我认为只是预期json作为输入。 [链接](http://api.jquery.com/jQuery.ajax/)。我们在过去已经使用过pageMethods,并且没有通过json – Anthony
如果没有参数,您可能已经知道了,但是您必须使用带有静态“页面方法”和ASMX“ScriptServices”的JSON输入参数。如果您使用ScriptManager通过PageMethod.YourMethodName()语法调用页面方法,您可能没有注意到过去。在这种情况下,MicrosoftAjax.js会自动处理客户端JSON序列化。 –
你知道错误信息是什么吗? –