1

私はjsonpを使用して次のajax関数を持っています:

    function PopulateDivisions1()
{
    $.support.cors=true;


    $.ajax({
        type:'GET',
        url:'http://IP/Service/api/DivisionSearch/GetAllDivisions?callback=?',
        dataType: "jsonp",
        //jsonp: false,
        jsonpCallback: "myJsonMethod",

        success: function(data) {

                alert('yes');

                $("#divisionSelect").append($('<option></option>').val("-99").html("Select One"));
            $.each(data, function(i, item){
                $("#divisionSelect").append($('<option></option>').val(item.Name).html(item.Name));
            });
        },
        error: function(xhrequest, ErrorText, thrownError) {
            alert("Original: " + thrownError + " : " + ErrorText);
        }
    });


}

次のエラーが表示されます: myJsonMethod was not called : parsererror

Fiddler を見ると、次のデータが返されています。コールバック名を前に追加しました。それを見て、それを取り出してもまだ機能しません。

    "myJsonMethod([{\"Id\":1,\"Description\":\"Executive\",\"Name\":\"Executive \"},{\"Id\":2,\"Description\":\"ASD\",\"Name\":\"Administrative Services Division \"},{\"Id\":3,\"Description\":\"COM\",\"Name\":\"Communications \"},{\"Id\":4,\"Description\":\"CP\",\"Name\":\"Contracts and Procurement \"},{\"Id\":5,\"Description\":\"PMD\",\"Name\":\"Program Management Division \"},{\"Id\":6,\"Description\":\"RED\",\"Name\":\"Research and Evaluation Division \"},{\"Id\":7,\"Description\":\"IT\",\"Name\":\"Information Technology \"}])"

これが私のコントローラーのメソッドです:

     public string GetAllDivisions(string callback)
    {
        var divisions = _DivisionModel.GetAllDivisions();

        var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();

        string json = serializer.Serialize(divisions);

        string result = callback + "(" + json + ");";

        return result; 
    }

成功の電話に出られません。何が欠けているか、間違っていますか?

4

1 に答える 1

-1

jsonp の場合、サーバー側のコードが javascript を返すため、jsonp コールバックが自動的に発生するため、成功コールバックを指定する必要はありません。

実際の例については、以下の回答を参照してください。

jquery jsonpを使用すると、コールバック関数が呼び出されなかったというエラーが返されます

于 2013-10-19T12:45:21.087 に答える