簡體   English   中英

jQuery $ .post()在Internet Explorer中不起作用

[英]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.

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