Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么不是';这个Jquery Ajax在Opera和Safari中不起作用吗?_Php_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Php 为什么不是';这个Jquery Ajax在Opera和Safari中不起作用吗?

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

此代码适用于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
前面放置一个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.php

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的错误控制台选项卡下找到。

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:安全违规”。。。