2013-10-10 7 views
0

Я пытаюсь сделать вызов jQuery ajax веб-службе ASP.NET из приложения php. Я пытался с jsonp, но результат всегда один и тот же. Это всегда дает мне результат ошибки, и когда я пытался увидеть ошибку, это только дает мне пустой результат. Я попытался добавить и удалить атрибуты вызова ajax, чтобы увидеть, работает ли он, но все равно не получается. Что касается веб-сервиса, я на 100% уверен, что он работает нормально.JQuery вызов ajax всегда возвращает ошибку на веб-службе ASP.NET

Так вот код для моего 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:

<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 

Любая помощь будет высоко оценен. Спасибо.

Cheers.

ответ

0

Ну, я понял, в чем была моя ошибка.

Чтобы помочь кому-то там, кто имеет такую ​​же проблему, я добавил еще один параметр в моих методов веб-сервиса, который является параметром обратного вызова, например, так:

<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); 
       } 
      });  

Надеюсь, это поможет. Спасибо.

Смежные вопросы