簡體   English   中英

AJAX未在IE7 / IE8中傳遞POST變量

[英]AJAX not passing POST vars in IE7/IE8

請注意:回答“使用jquery”或“使用(插入知名框架)”無濟於事。 諸如jquery之類的框架包含很多額外的代碼,這些代碼對於我正在做的事情根本不是必需的。 “但是,您可以包括Google提供的一個”,是的,可能是這樣,但是我更喜歡保留自己的代碼。 考慮到這一點,讓我們繼續解決問題。

我有一個ajax調用,它不會在IE7 / IE8上通過POST var,而只是在少數情況下才通過。 它似乎是非常隨機的,並且在大多數情況下都起作用。

我看過jquery,與這種自定義查詢相比,它的工作方式沒有太大區別。

這是ajax函數:

function GetXmlHttpObject(handler){ 
  var objxml = null;
 if(handler==null) {
  handler = function() {}
 }

   var ProgID = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];              

     try {  
         objxml = new XMLHttpRequest();  
     }  
     catch(e) {  
         for (var i = 0; i < ProgID.length; i++){  
             try {  
                 objxml = new ActiveXObject(ProgID[i]);  
             }  
             catch(e) {  
                 continue;  
            }  
         }  
     } 
 objxml.onreadystatechange=handler;

     return objxml;  
}

調用Ajax函數的函數將如下所示:

function sample_ajax(object_type,object_id) {
 var d = new Date();
 var time = d.getTime();
 var url= MYSITEURL + "my_ajax_script.php?timestamp="+time;

 params = "object_type="+object_type+"&object_id="+object_id;
 xmlHttp_comment_notifyreset = GetXmlHttpObject(sample_ajax_helper);//fails on safari 1
 xmlHttp_comment_notifyreset.open("POST", url , true);

 xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "no-cache");
 xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "no-store");
 xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "must-revalidate");
 xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "post-check=0");
 xmlHttp_comment_notifyreset.setRequestHeader("Cache-Control", "pre-check=0");
 xmlHttp_comment_notifyreset.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");


 xmlHttp_comment_notifyreset.setRequestHeader("Content-Type", "application/x-www-form-URLencoded");
 xmlHttp_comment_notifyreset.setRequestHeader("Content-Length", params.length);
 xmlHttp_comment_notifyreset.setRequestHeader("Connection", "close");

 xmlHttp_comment_notifyreset.send(params);
}

我看過jquery,與這種自定義查詢相比,它的工作方式沒有太大區別。

如果有時僅無法發送參數,則問題可能出在此行:

params = "object_type="+object_type+"&object_id="+object_id;

參數無法逃脫。 嘗試這個:

params = "object_type=" +
         encodeURIComponent(object_type) +
         "&object_id=" +
         encodeURIComponent(object_id);

使用Ultimate Ajax對象 簡潔明了,可在所有瀏覽器上使用。

並沒有很多幫助,但是這篇文章看起來很詳細: https//developer.mozilla.org/en/AJAXGetting_Started

我在jquery中遇到了類似的問題,其中post參數沒有通過。 這與asp.net讀取post參數的方式有關。 下面的文章演示了如何直接從請求的輸入流中提取post參數。 http://www.bytechaser.com/zh-CN/functions/2jxhy5gg7w/read-ajax-post-parameters-in-asp-net.aspx 希望能幫助到你

我不記得曾經見過具有大寫字符的內容類型,例如“ application / x-www-form-URLencoded”,而且我不知道它是否符合規范。 但是,我已經看到PHP由於請求中缺少Content-Type標頭而忽略了POST。 (由於代理決定將其省略)

PHP會忽略它無法識別的任何內容類型。 可以解決所有問題的可能性很小,但是您可以嘗試將URL更改為url

嘗試使用php中的http://php.net/manual/en/reserved.variables.httprawpostdata.php來獲取輸入變量,例如ASP.net家伙

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM