Jquery ajax调用始终在ASP.NET Web服务上返回错误

时间:2013-10-10 10:14:23

标签: asp.net web-services jquery

我一直在尝试从php应用程序对ASP.NET Web服务进行jquery ajax调用。我试过jsonp,但结果总是一样的。它总是给我一个错误结果,当我试图看到错误时,它只给我一个空白的结果。我已经尝试添加和删除ajax调用的属性,看看它是否有效,但仍然没有结果。至于网络服务,我100%肯定它工作正常。

所以这是我的ajax调用的代码:

function submitClicked(){
        var url = "http://localhost/MyWebService/service1.asmx/HelloWorld";
        $.ajax( url, {
                dataType: "jsonp", 
                type:'POST',  
                success: function (data) {  
                    successCallback(data);  
                },
                error:function(error){
                    console.log("error");
                }

        });
}

这是我在VB.NET中的Web服务代码:

<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Sub HelloWorld()
    Context.Response.Clear()
    Context.Response.ContentType = "application/json"
    Context.Response.Flush()
    Context.Response.Write("{""success"":1}")
End Sub

任何帮助都将受到高度赞赏。谢谢。

干杯。

1 个答案:

答案 0 :(得分:0)

好吧,我弄明白我的错误是什么。

为了帮助那些有相同问题的人,我在我的Web服务方法中添加了一个参数,这是一个回调参数,如下所示:

 <WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _
Public Sub HelloWorld(ByVal Test As String, ByVal callback As String)
    Dim json As String = "{""success"":1}"
    Dim sb As StringBuilder = New StringBuilder()
    sb.Append(callback + "(")
    sb.Append(JsonConvert.SerializeObject(json))
    sb.Append(");")
    Context.Response.Clear()
    Context.Response.ContentType = "application/json"
    Context.Response.Write(sb.ToString)
    Context.Response.End()
End Sub

至于ajax函数,它是这样的:

$.ajax({
                url: "http://localhost/MyWebService/Service1.asmx/HelloWorld",
                crossDomain:true,
                type: 'POST',
                dataType: "jsonp",
                cache: false,
                data:{Test:'This is a test'},
                success:function(data){
                    var json = $.parseJSON(data);
                    if(json.success == 1) {
                         alert("success");
                    }
                    else
                    {
                         alert("failed");
                    }
                },
                error:function(error){
                    alert(error);
                }
            });     

希望它有所帮助。谢谢。