0

PHP アプリケーションから ASP.NET Web サービスへの jquery ajax 呼び出しを実行しようとしています。jsonp で試してみましたが、結果は常に同じです。常にエラー結果が表​​示され、エラーを表示しようとすると、空白の結果しか表示されません。ajax呼び出しの属性を追加および削除して、機能するかどうかを確認しようとしましたが、まだ結果が得られません。Web サービスに関しては、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

どんな助けでも大歓迎です。ありがとうございました。

乾杯。

4

1 に答える 1

0

さて、私は自分の間違いが何であるかを理解しました。

同じ問題を抱えている人を助けるために、次のように、コールバック パラメーターである Web サービス メソッドにもう 1 つのパラメーターを追加しました。

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

それが役に立てば幸い。ありがとうございました。

于 2013-10-11T08:16:11.707 に答える