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