10

私は小さな問題に出くわしました。67615 エントリのバイト配列を含む JSON 応答が返されます。さて、それは追加します

`[....,154,156,);jQuery1910039778258679286416_1363006432850(181,104,...]

~7300文字ごと

ajaxメソッドを使用して解析すると、通常の動作方法でエラーが発生します。これは、コールバックが応答を無効にするため、エラーが発生します

...,184,1,26,65,140,​​86,211,16,194,210,174,1);jQuery17203250109862964784_13639643449...

そのため、もう有効ではありません

これを使用して解析します

$.ajax({
    url : url,
    cache : false,
    dataType : "jsonp",
    crossDomain : true,
    success : function(root) {
        console.log(root)

    }
})

これは、オブジェクトを提供する asp サーバーに問題がある可能性がありますか、それとも解析に問題がありますか?

前もって感謝します

EDIT1:

   [WebMethod(Description = " ", EnableSession = true)]
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]

public Borrower getSessionedBorrowerHeader(ref sysmessage aMessage)
{
    if (!(userValidated(ref aMessage)))
        return null;
    BorrowerControl borrowerControl = new BorrowerControl(LOCALconnectionStringDb,
                                                          WEBconnectionStringDb,
                                                          STATSconnectionStringDb,
                                                          LIBconnectionStringDb,
                                                          CATconnectionStringDb,
                                                          LIBconnectionStringDb,
                                                          Session);
    Borrower returnObj = borrowerControl.getSessionedBorrowerHeader(ref aMessage);
    borrowerControl.Dispose();
    return returnObj;
}

さらにコードが必要な場合は、ASPに興味がないことを教えてください:(

EDIT2:

http://pastebin.com/e3X2VKxY

何をすべきか:( これがJSON回答です

4

2 に答える 2

1

これは、ASP の制限要因のように思えます。これは jQuery 固有のものではありませんが、ASP サーバーからのすべての JSON 応答です。これは ColdFusion サーバーでも見られました。この設定を見つけて、現在の制限が達成した制限と相関しているかどうかを確認してください。必要な数まで増やすことができるかどうかを確認してください。

<system.web.extensions>  
    <scripting>  
        <webServices>  
            <jsonSerialization maxJsonLength="x"></jsonSerialization>  
        </webServices>  
    </scripting>  
</system.web.extensions>

サーバー設定にアクセスできない場合は、コードで値を設定することもできます。そのための MSDN リファレンスは次のとおりです。

http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.maxjsonlength.aspx

そこには次のようにも述べられています。

JSON 文字列の最大長。デフォルトは 2097152 文字で、4 MB の Unicode 文字列データに相当します。

これは、7300 文字の長さをはるかに超えています。しかし、おそらく誰かがこの設定を調整したのでしょう。

また、コールバック メソッドに「複数」の戻りが見られることにも興味があります。通常、この制限は最初のコールバック結果の結果を単純に切り捨てると思います。ひょっとしたら、あなたにも何か他のことが起こっているのでしょうか?

于 2013-04-02T01:16:41.333 に答える
0

jQueryのドキュメントによると、jsonpコールバックの名前を設定して、ケースのバイトを節約できます。jsonpCallback

function J() { ... }
$.ajax({
    url : url,
    cache : false,
    dataType : "jsonp",
    jsonpCallback : "J",
    crossDomain : true,
    success : function(root) {
        console.log(root)
    }
})
于 2013-03-19T17:51:51.810 に答える