لماذا لا يعمل التحميل الخاص بي الآن عندما كان من قبل؟ أو فشل Ajax في الأمر المتطابق الثاني؟

StackOverflow https://stackoverflow.com/questions/564676

  •  05-09-2019
  •  | 
  •  

سؤال

هذا يتبع من هذه سؤال

هذه كنت عمل:

<body onbeforeunload=
 "ajaxRequest('UnlockQuery.ashx?QueryID=266&UserID=11631');"> 

تم إنشاء هذا باستخدام ما يلي في صفحة ASPX:

<body onbeforeunload=
 "ajaxRequest('UnlockQuery.ashx?QueryID=<%= Session["QueryId"] %>&
 UserID=<%= Session["UserID"] %>')">

هذا هو ليس عمل:

<body id="uxBodyTag" onbeforeunload=
 "ajaxRequest('UnlockQuery.ashx?QueryID=266&amp;UserID=11631');"> 

يتم إنشاء هذا باستخدام:

uxBodyTag.Attributes["onbeforeunload"] += 
 "ajaxRequest('UnlockQuery.ashx?QueryID=" + 
 queryId.ToString() + "&UserID=" + Session["UserID"].ToString() + "');";

رمز يسمى هو هذا:

function ajaxRequest(url)
{
    xmlhttp=null;
    if (window.XMLHttpRequest)
    {   // code for all new browsers
        xmlhttp=new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {   // code for IE5 and IE6
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (xmlhttp!=null)
    {
        xmlhttp.onreadystatechange=null;
        xmlhttp.open("GET",url,true);
        xmlhttp.send(null);
    }
}

تعديل:

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

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

المحلول

إضافة

&date=DateTime.now.Ticks.ToString()

يبدو أنها ثابتة. لا أعتقد أن IE7 يحب ذلك عندما يأتي مكالمة AJAX نفسها ولم يتم "حل" السابق (يتم التخلص من الصفحة قبل إرجاع استدعاء AJAX).

شكرا لكل ما قدمت المساعدة.

نصائح أخرى

للحصول على وسائل التصحيح، حاولنا:

alert(url);
xmlhttp.open("GET",url,true);

الذي أعطى النتيجة المتوقعة ل:

Unlockquery.ashx؟ QueryID = 319 و UserID = 11648

الآن يمكننا التحقق من أن الخادم يجب أن يقول من خلال:

xmlhttp.onreadystatechange = function() { 
  if (this.readyState == 4) alert(this.status + ": " + this.StatusText); 
};

تعديل:

كما اتضح، كان ذاكرة التخزين المؤقت للمتصفح هو السبب في النتائج غير المتوقعة. أقترح منع التخزين المؤقت صفحة AJAX من خلال رؤوس HTTP المناسبة (Pragma, Cache-Control, Expires).

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