Php 为什么不是';这个Jquery Ajax在Opera和Safari中不起作用吗?
此代码适用于FF、Chrome、IE6/8,但不适用于Safari和Opera。 你知道为什么吗 代码如下:Php 为什么不是';这个Jquery Ajax在Opera和Safari中不起作用吗?,php,javascript,jquery,html,ajax,Php,Javascript,Jquery,Html,Ajax,此代码适用于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=' + em
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
前面放置一个alertbox时,警报会正确显示。
但是,如果我将alertbox放入success函数,则不会显示任何内容,也不会显示任何警报
这只发生在歌剧和狩猎中
编辑:
仅供参考:我将此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 url的路径是/bin/tip.php,而不是my_php_file.phpOpera内置了一个名为Dragonfly的调试工具。进入工具菜单->高级->歌剧蜻蜓
如果没有文件菜单栏,请单击菜单->页面->开发人员工具->打开Opera Dragonfly 打开后(在您正在处理的页面上打开),单击脚本选项卡(它可能会要求您刷新页面并执行该操作),然后下拉到外部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的错误控制台选项卡下找到。Opera内置了一个名为Dragonfly的调试工具。进入工具菜单->高级->歌剧蜻蜓
如果没有文件菜单栏,请单击菜单->页面->开发人员工具->打开Opera Dragonfly 打开后(在您正在处理的页面上打开),单击脚本选项卡(它可能会要求您刷新页面并执行该操作),然后下拉到外部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:data\u字符串,您应该 数据:{esm:name,nam:email,med:message,“i_d”:ad_id}
jQuery将为您正确地创建查询字符串。实际上没有办法判断。您没有发布php文件。在不知道输出的情况下,我们无法确定浏览器将如何响应 不过,还有其他提示,#1您没有对传递给它的任何值使用encodeURIComponent。让jQuery为您做这件事要简单得多 而不是data:data\u字符串,您应该 数据:{esm:name,nam:email,med:message,“i_d”:ad_id}
jQuery将为您正确地创建查询字符串。在Opera中,默认情况下允许文件XMLHttpRequest为false。因此,您需要更改设置。打开Opera浏览器,键入about:config。它将带您进入首选项屏幕。转到User Prefs文件夹,可以看到设置允许文件XMLHttpRequest。检查并保存。它应该可以工作。在Opera中,默认情况下允许文件XMLHttpRequest为false。因此,您需要更改设置。打开Opera浏览器,键入about:config。它将带您进入首选项屏幕。转到User Prefs文件夹,可以看到设置允许文件XMLHttpRequest。检查并保存。它应该会起作用。我对Firebug不太在行,我应该如何阅读它所说的内容?另外,firebug不是只针对FF的,那么我如何判断Opera中的错误呢?“Net”选项卡,在那里你可以找到你的请求和响应。我应该寻找什么,它上面写着“200 OK”和一大堆其他东西。一切似乎都很好。响应正是我所期望的。@Camran-Opera内置了一个名为Dragonfly的调试工具。转到工具菜单->高级->Opera Dragonfly如果没有文件菜单栏,请单击菜单->页面->开发人员工具->打开OperaDragonfly@Drackir:找到了!现在我猜我应该在“网络”下找,对吗?但它是空白的,当我提交时什么都没有发生。。。如何排除故障还有其他提示吗?谢谢,阿洛蒂,我对萤火虫不太在行,我该怎么看上面写的?另外,firebug不是只针对FF的,那么我如何判断Opera中的错误呢?“Net”选项卡,在那里你可以找到你的请求和响应。我应该寻找什么,它上面写着“200 OK”和一大堆其他东西。一切似乎都很好。响应正是我所期望的。@Camran-Opera内置了一个名为Dragonfly的调试工具。转到工具菜单->高级->Opera Dragonfly如果没有文件菜单栏,请单击菜单->页面->开发人员工具->打开OperaDragonfly@Drackir:找到了!现在我猜我应该在“网络”下找,对吗?但它是空白的,当我提交时什么都没有发生。。。如何排除故障还有其他提示吗?谢谢alotOk,我收到一条错误抛出消息:“ReferenceError:安全违规”。。。