簡體   English   中英

為什么這個Jquery Ajax無法在Opera和Safari中運行?

[英]Why isn't this Jquery Ajax working in Opera and Safari?

該代碼在FF,Chrome,IE6 / 8中有效,但在Safari和Opera中無效。 有什么想法嗎?

這是代碼:

var name = $('#esm').val();
        var email = $('#nam').val();
        var message = $('#med').val();
        var ad_id = $('#i_d').val();

    var data_string = 'esm='+ name + '&nam=' + email + '&med=' + message + '&i_d=' + ad_id;

            $.ajax({
                type:       "POST",
                url:        "/my_php_file.php",
                data:       data_string,
                success:    function(data) {
                    $('#tip_loader').hide();
               if(data==1){alert('success'); }
               else {alert('error'); }
                       }//end success function
        }) //end ajax call

我將錯誤定位在“ Ajax”調用上,因為在$.ajax之前放置警報框時,警報可以正確顯示。 但是,如果將警報框放在成功功能中,則什么也沒有顯示,也沒有警報。

這僅發生在Opera和Safari中...

編輯:

僅供參考:我將此JavaScript文件包含在php文件中,並且還將jquery.js文件包含在php文件中。 所以這一切都在一個外部文件中。

編輯:

/main.php /bin/jquery.js /bin/tip.js /bin/tip.php

我將上述js文件包含在main.php中,並且main.php中的form action設置為/bin/tip.php

而且Ajax網址的路徑是/bin/tip.php而不是my_php_file.php

在Opera中,默認情況下,“允許文件XMLHttpRequest”為false。 因此,您需要更改設置。 打開Opera瀏覽器,輸入about:config。 它將帶您到“首選項”屏幕。 轉到User Prefs文件夾,您可以看到一個設置Allow File XMLHttpRequest。 檢查並保存。 它應該工作。

Opera具有內置的調試工具Dragonfly。 轉到“工具”菜單->“高級”->“ Opera Dragonfly”
如果沒有文件菜單欄,請單擊菜單->頁面->開發人員工具->打開Opera Dragonfly

打開它后(在您正在處理的頁面上打開它),單擊Scripts選項卡(它可能會要求您刷新頁面,執行此操作),然后下拉至您的外部js文件。 找到代碼后,可以通過單擊左側的行號在$.ajax()行上設置斷點。 現在,觸發您的代碼,您將看到它會在該JavaScript行上中斷。 然后,您可以使用檢查選項卡(底部,中間)來確保正確設置了所有變量。 您也可以單步調試JavaScript。

您要做的另一件事是添加一個錯誤函數,如下所示:

$.ajax({
    type: "POST",
    url: "/my_php_file.php",
    data: data_string,
    success: function(data) {
        $('#tip_loader').hide();
        if (data == 1) { alert('success'); }
        else { alert('error'); }
    }, //end success function
    error: function(xhr, textStatus, errorThrown) {
        alert(errorThrown);
    }
});  //end ajax call

看看是否能為您提供更多信息。

另外,按照@Mufasa的建議檢查錯誤控制台。 可以在Dragonfly中的“錯誤控制台”選項卡下找到它。

真的沒有辦法說出來。 您沒有發布php文件。 在不知道輸出的情況下,我們無法確定瀏覽器將如何響應。

但是,還有其他一些技巧,#1您沒有為任何傳遞它的值使用encodeURIComponent。 讓jQuery為您做這件事要簡單得多,

而不是數據:data_string,您應該有

數據:{esm:名稱,nam:電子郵件,med:消息,“ i_d”:ad_id}

jQuery將為您正確創建查詢字符串。

暫無
暫無

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

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