[英]jQuery $.post() not working in Internet Explorer
我有以下jQuery片段:
var AlertType =
{
Save: function () {
var model = $('#alert').serialize();
$.post('/account/alert/edit', model);
}
}
調用AlertType.Save()
, $.post()
AlertType.Save()
在IE中不起作用,但是在所有其他瀏覽器中(感到驚訝嗎?),我嘗試研究此問題,但這是一個相當廣泛的類別或問題。 我什至在$.post()
放置了一個回調函數,並嘗試在該回調中使用alert()
,但它從未觸發警報。
可能是什么原因造成的,解決辦法是什么?
在你的鞋子里,我將問題分解成最小的部分,然后從那里開始。
第1步
您確定AlertType.Save()
被調用了嗎? 發出警報:
var AlertType =
{
Save: function () {
alert('Save called.');
var model = $('#alert').serialize();
$.post('/account/alert/edit', model);
}
}
第2步
如果Save()
被調用,嘗試調用$.post()
與null
,而不是模型。 在“ Alert
控制器中的“ Edit
”操作方法的代碼中放置一個斷點。 您要確保正在調用控制器代碼。
第三步
如果正在調用控制器代碼,則說明model
存在問題。 (不知道從哪里拿走,對不起)。 如果仍未調用控制器代碼,則嘗試直接調用$.post()
,即不使用AlertType.Save()
。 所以代替:
AlertType.Save();
做實際的$ .post()。 您想在這里消除它成為錯誤的javascript對象的機會。
也許以上這些是矯kill過正,但是您只需這樣做一次,如果再次發生,您將學到一些東西:)根據經驗,由於IE確實很愚蠢,IE可以使您不得不四處走動以診斷問題。有時候,其他瀏覽器根本不這樣做。 要愛IE瀏覽器。
根據我的經驗,IE比其他瀏覽器更積極地緩存。
嘗試在查詢中添加一個隨機數:
$.post('/account/alert/edit?r=' + (Math.random() * 999), model);
這可能是瀏覽器上的安全策略。 IE是否會阻止XmlHttpRequest的使用,除了少數受信任的域外,其他所有域都可能嗎?
嘗試$.ajax
對象,它在IE 8中可以正常工作:
var ajaxobject = $.ajax(
{
type:'POST',
url:'/account/alert/edit',
cache:false,
async:true,
global:false,
dataType:"html",
data:"model=" + $('#alert').serialize(),
timeout:10000,
success:function(recept)
{
alert('sucess !\nReceived data :\n' + recept);
},
error:function()
{
alert('failed.');
}
});
if(ajaxobject == undefined)
alert('Ajax object creation failed');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.