المعلمة الأولى للطريقة المفتوحة لكائن XMLHTTPrequest هي نوع الطلب ، ويمكن الحصول على القيمة أو نشرها. هذه المقالة تقدم طلب الحصول على.
الغرض من الحصول على الطلب هو أساسا للحصول على البيانات. على الرغم من أن طلبات الحصول على البيانات يمكنها تمرير البيانات ، فإن الغرض من تمرير البيانات هو إخبار الخادم بمحتوى منحنا.
عند استخدام طلب الحصول ، يتم تمرير المعلمات مع عنوان URL.
عند استخدام طلبات الحصول على طلبات مؤقتة ، يتم تخزينها بسهولة ، لذلك تحتاج إلى الانتباه إلى مشاكل التخزين المؤقت.
عند استخدام طلب الحصول على طلب ، يجب أن يستخدم جانب الخادم request.quareString [Data] للحصول على البيانات.
استخدمنا طلب الحصول في المقالة "أكمل مثيل AJAX". واجهنا المشاكل التالية في ذلك الوقت:
- كيفية إنشاء كائن XMLHTTPrequest يمكن تشغيله في معظم المتصفحات.
- هناك مشكلة التخزين المؤقت عند استخدام طلب الحصول على طلب
- مشكلة مشوهة الصينية
من بينها ، تم حل المشكلة الأولى في مقالة "كائن XMLHTTPrequest" ؛
للمشكلة الثانية ، والسبب هو:
سيقوم طلب الحصول على ذاكرة التخزين المؤقت في كل مرة لمعرفة ما إذا كان هناك عنوان URL مطابق. إذا كان هناك ، سيتم إرجاع عنوان URL في ذاكرة التخزين المؤقت. إذا لم يكن هناك ، فسيتم تقديم طلب إلى الخادم.
حل:
1. أضف معلمة تغيير ديناميكية إلى عنوان URL لتجد أنه في كل مرة تصل فيها إلى عنوان URL مختلف ، بحيث يتم إصدار طلب جديد للخادم في كل مرة.
بالنسبة للسؤال الثالث ، دعونا نلقي نظرة أولاً على أسباب الكود المشوهة:
البيانات التي يتم إرجاعها بواسطة XMLHTTP هي UFT-8 افتراضيًا. إذا كانت صفحة العميل هي GB2312 أو غيرها من الترميز ، فسيحدث رمز مشتعل.
حل:
1. إذا كان العميل هو GB2312 ، فحينئذٍ عند الإخراج ، حدد ترميز دفق الإخراج.
2. كل من العميل والخادم يستخدمان UTF-8 ترميز
3. تأكد من استخدام طريقة EncodeUricOpment لترميز المعلمات
انتبه إلى المثال:
لم يتغير ملف HTML الصفحة. معرفة رمز JS التغيير كما يلي:
<script type = "text/javaScript"> function btn_click () {// إنشاء xmlhttprequest كائن var xmlhttp = window.xmlhttprequest (): new ActiveXobject ("Microsoft.xmlhttp") ؛ // احصل على قيمة var var username = document.getElementById ("txt_username"). القيمة ؛ var age = document.getElementById ("txt_age"). value ؛ // تكوين XMLHTTPrequest كائن // استخدم طريقة encode uricomponent لتشفير المعلمات التي تم الحصول عليها // إضافة معلمات للوصول إلى عناوين URL مختلفة في كل مرة لتجنب مشاكل ذاكرة التخزين المؤقت xmlhttp.open ("get" ، "get.aspx؟ username =" + encodeuricomponent (username) + " Math.Random ()) ؛ // قم بتعيين وظيفة رد الاتصال xmlHttp.OnReadyStateChange = function () {if (xmlHttp.ReadyState == 4 && xmlhttp.status == 200) {document.getElementById ("result"). innerhtml = xmlhttp.rosponsext ؛ }} // إرسال الطلب ، لأن المعلمات كلها في عنوان URL ، لذلك يتم إرسال فارغ هنا xmlhttp.send (null) ؛ } </script>
جانب الخادم:
page page_load محمي (مرسل الكائن ، eventArgs e) {reponse.clear () ؛ username username = request.querystring ["اسم المستخدم"] ؛ العمر العمر = request.querystring ["العمر"] ؛ Response.write ("name:" " + username +" '<br/> العمر: " + Age +" <br/> الوقت: " + dateTime.now.toString () +" "") ؛ استجابة. end () ؛}// المصدر من http://www.vevb.com/oneword/archive/2011/06/04/2072585.html