سؤال

لدي البرنامج المساعد JQuery الحالي الذي يجعل الكثير من مكالمات AJAX (في الغالب JSON). أنا أتساءل ما هو أسرع السماح لها بإجراء مكالمات عبر الموقع، أي url $. post url لن يكون من نفس المجال.

لقد سمعت عن JSONP، لكنه أتساءل عما إذا كان شخص ما قد يعطيني مثالا ملموسا للذهاب في العملية برمتها. أريد أن أجعل الحد الأدنى من التغييرات إذا أمكن النصي. يجب أن أستخدم proxy.php من أنواع؟

شكرا لوقتك.

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

المحلول

سوف يسمح لك JSONP بإجراء مكالمات عبر الموقع. رؤية مستندات jquery في هذه المسألة.

المفهوم بسيط: بدلا من إجراء مكالمة AJAX العادية، سيقوم JQuery بإلغاء <script> علامة لك <head>. وبعد من أجل العمل هذا، يجب تحميل بيانات JSON الخاصة بك في مكالمة دالة.

يحتاج الخادم الخاص بك إلى إرسال معلومات بهذه الطريقة (مثال PHP):

$json = json_encode($data);
echo $_GET['jsonp_callback'] . '(' . $json . ');';

ثم، يمكنك استخدام JQUERY لجلب هذه المعلومات:

$.ajax({
  dataType: 'jsonp',
  jsonp: 'jsonp_callback',
  url: 'http://myotherserver.com/getdata',
  success: function () {
    // do stuff
  },
});

يتوفر مزيد من المعلومات هنا: ما هو JSONP؟

نصائح أخرى

إذا كان لديك التحكم في المجال البعيد أو المجال البعيد له مسنس crossdomain.xml. يمكنك إسقاط في مكتبة مثل FLXHR. بالتزامن مع مسج البرنامج المساعد.

يمكنك أيضا استخدام Cors بدلا من JSONP، يعمل مع FF، Chrome، Safari. Cors أقل مزعجة لإعداد ويتطلب فقط تصفية في جانب الخادم.

يرجى الذهاب من خلال هذه المادة. وأوضح ومماثلة. القيد الوحيد هو IE لا يدعم هذه الإصدارات الأقدم من FF، كروم لديها أيضا بعض المشكلات.

http://techblog.constantcontactact.com/software-development/using-cors-for-cross-domain-ajax-requests/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top