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