سؤال

انا اتصل بي عبر النطاقات خدمة الويب من خلال getJson() دعوة من مسج.كما ردي كائن حجم كبير جدا, لقد استخدمت أقصى سلمان حجم أجل خدمة الويب.لقد راجعت getJson() هو إعطاء الرد المناسب الكائن.ولكن لا يزال بلدي وظيفة رد الاتصال لا يسمى.الحرائق أقول أنه(فايرفوكس) استجابة حجم تجاوز.

هل يستطيع احد ان يخبرني ماذا يكون الحد الأقصى المتصفح رد حجم الحد الذي متصفح قياسي هـ.ز (firefox, ie) مقبض و كيفية التعامل مع هذه المشكلة ؟

هنا مقتطف شفرة نفسه.

 //Wrapper call to the actual getJson call
 function getResponse() {
    var localService = new getServiceProxy("SearchData.asmx");
    localService.invoke("Search", "", "successcall");
 }

 //getJson call
 function getServiceProxy(serviceUrl) {
     var _I = this;
     this.serviceUrl = serviceUrl;

     // *** Call a wrapped object
     this.invoke = function(method, data, callback, error) {

         if (data == "") {
             var url = _I.serviceUrl + "/" + method + "?output=json&callback=?";
         }
         else {
             url = _I.serviceUrl + "/" + method + "?" + data + "&output=json&callback=?";
         }
         $.getJSON(url, function(arg) {       
             var evalstr = callback + "(" + JSON.stringify(arg) + ");";
             eval(evalstr);
         });
     }
 }

 //success callback function
 function successcall(multiSearchResponse) {
     //use the response.
 }

أي مساعدة سوف تكون محل تقدير كبير.

شكرا Subrat.

هل كانت مفيدة؟

المحلول

وإيف تم من خلال هذا مرة واحدة في المشروع، وما أذكر كان ذلك IE له حد من 2083 حرفا لكل وظيفة وطلبات GET. FF له حد أكبر، ولكن لا حدود لها.

http://support.microsoft.com/kb/208427

نصائح أخرى

الشيء الوحيد الذي يبدو غريبا نوعا ما هي وظيفة رد الاتصال:

 $.getJSON(url, function(arg) {       
     var evalstr = callback + "(" + JSON.stringify(arg) + ");";
     eval(evalstr);
 });

منذ كنت تستخدم JSONP (بسبب طلب عبر المجال) المستجيبة الخدمة يجب أن تعود جافا سكريبت مثل:

jQueryGeneratedUniqueCallbackName12345({my: 'data', foo: 'bar'});

لذلك arg الحجة الفعلية كائن جافا سكريبت.يجب أن لا تحتاج إلى stringify ثم eval ذلك.ببساطة استخدامه كما هو ، أي:

 $.getJSON(url, function(data) {       
     console.log(data.foo);
 });

تماما قبل فترة نشرت لي عن الأعمال الداخلية JSONP على بلدي بلوق إذا كنت ترغب في مزيد من التفاصيل.

ربما كنت تريد الخاص بك $.getJSON جزء تبدو كما يلي:

$.getJSON(url, function(arg) {       
    callback.apply(null, JSON.stringify(arg));
});

// Or more simply

$.getJSON(url, function(arg) {       
    callback(JSON.stringify(arg));
});

بعض مزيد من المعلومات حول apply: MDN مستندات


تحديث: قبل أن يمكنك أيضا تغيير getResponse وظيفة:

function getResponse() {
    var localService = new getServiceProxy("SearchData.asmx");
    localService.invoke('Search', '', successcall);
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top