繁体   English   中英

为什么这个Jquery Ajax无法在Opera和Safari中运行?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM