我一直在尝试从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
任何帮助都将受到高度赞赏。谢谢。
干杯。
答案 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);
}
});
希望它有所帮助。谢谢。