无法使用Jquery JSON访问Web Service客户端

时间:2011-07-22 01:10:12

标签: jquery asp.net ajax web-services web

我无法通过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的问题。

我该怎么办?

提前致谢

2 个答案:

答案 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"); } 
         }); 
}