我无法通过jquery访问Web服务,我找不到问题,我已经检查了所有内容,但似乎没有任何工作。
这是我的javascript代码:
function obtenerMunicipios() {
$.ajax({
type: "POST",
url: "WebService.asmx/ObtenerMunicipios",
data: { sEstado: "info" },
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (response) { alert(response.d); },
error: function (response) { alert("Error"); }
});
}
这是在DropDownList更改时调用的,我在Web服务中测试了WebMethod并且它工作正常,顺便返回一个ArrayList,我已经分别放了[ScriptService]和[WebMethod]。它总是告诉我有一个错误。
Visual Studio将代码文件放在App_Code中但asmx文件放在root中我不知道这是不是问题,但我不这么认为,因为我可以访问webmethod服务器端。
结果总是向我显示错误警告,如果我在WebMethod中放置一个断点,它永远不会到达那里,所以我认为这是URL的问题。
我该怎么办?
提前致谢
答案 0 :(得分:1)
尝试检查返回错误 将您的“错误:”更改为此
error:function (xhr, ajaxOptions, thrownError){
alert(xhr.responseText);
alert(xhr.status);
alert(thrownError);
}
您可以在Firebug或Fiddler或IE9 Developer工具中看到更多内容
你也可以在你的页面上创建webmetod,服务器端是这样的:
public partial class _Default : Page
{
[WebMethod]
public static string GetDate()
{
return DateTime.Now.ToString();
}
}
在客户端更改此
url: "PageName.aspx/GetDate"
以Dave页面为例: http://encosia.com/using-jquery-to-directly-call-aspnet-ajax-page-methods/
答案 1 :(得分:0)
如果您还没有,请查看通过提琴手发回的内容。我的猜测是它的发送 回到它喜欢的东西。
您需要使用beforeSend event指定您的请求。
function obtenerMunicipios()
{
$.ajax({
type: "POST",
url: "WebService.asmx/ObtenerMunicipios",
data: { sEstado: "info" },
contentType: "application/json; charset=utf-8", dataType: "json",
success: function (response) { alert(response.d); },
error: function (response) { alert("Error"); },
//This is the line you're looking for I think.
beforeSend: function(xhr, settings) { xhr.setRequestHeader("Accept",
"application/json"); }
});
}