此代码适用于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中的表单操作设置为/bin/tip.php
ajax网址的路径是/bin/tip.php而不是my_php_file.php
答案 0 :(得分:1)
在Opera中,默认情况下允许文件XMLHttpRequest为false。所以你需要改变设置。打开Opera浏览器,输入about:config。它将带您进入Preference屏幕。转到User Prefs文件夹,您可以看到设置允许文件XMLHttpRequest。检查然后保存。它应该工作。
答案 1 :(得分:0)
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的错误控制台选项卡下找到。
答案 2 :(得分:0)
没有办法说出来。你没有发布php文件。在不知道输出的情况下,我们无法确定浏览器的响应方式。
其他提示,#1您没有对传递它的任何值使用encodeURIComponent。让jQuery为你做这件事要简单得多,
而不是data:data_string,你应该有
数据:{esm:name,nam:email,med:message,“i_d”:ad_id}
jQuery将为您正确创建查询字符串。