相关疑难解决方法(0)

jQuery AJAX跨域

这是两个页面,test.php和testserver.php.

test.php的

<script src="scripts/jq.js" type="text/javascript"></script>
<script>
    $(function() {
        $.ajax({url:"testserver.php",
            success:function() {
                alert("Success");
            },
            error:function() {
                alert("Error");
            },
            dataType:"json",
            type:"get"
        }
    )})
</script>
Run Code Online (Sandbox Code Playgroud)

testserver.php

<?php
$arr = array("element1",
             "element2",
             array("element31","element32"));
$arr['name'] = "response";
echo json_encode($arr);
?>
Run Code Online (Sandbox Code Playgroud)

现在我的问题是:当这两个文件都在同一台服务器(localhost或web服务器)上时,它可以工作并被alert("Success")调用; 如果它位于不同的服务器上,意味着Web服务器上的testserver.php和localhost上的test.php,它就无法工作,并且alert("Error")正在执行.即使ajax中的URL更改为http://domain.com/path/to/file/testserver.php

javascript ajax jquery json cross-domain

468
推荐指数
10
解决办法
69万
查看次数

SCRIPT5:由于Wordpress中的jQuery.min CDN文件,IE9上的访问被拒绝

我在SCRIPT5上阅读了很多其他文章:在IE9中访问被拒绝的问题,但据我所知,这个有点不同,我不确定为什么会发生这种情况.

在使用标准2011主题的Wordpress 3.4.1安装中出现了这种情况.我使用以下函数将我的脚本排入队列:

function my_scripts(){
    wp_deregister_script('jquery');
    wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js',null,null,true);
    wp_register_script('cycle', 'http://ajax.microsoft.com/ajax/jquery.cycle/2.88/jquery.cycle.all.js',null,null,true);
    wp_register_script('plugin', get_stylesheet_directory_uri() . '/scripts/plugin-init.js',null,null,true);
    wp_enqueue_script('jquery');
    wp_enqueue_script('cycle');
    wp_enqueue_script('plugin');
}
Run Code Online (Sandbox Code Playgroud)

首先jquery,cycle脚本都是从CDN中提取出来的.plugin除了cycle对单个元素的基本调用外,该脚本为空.

此时所有浏览器都可以正常工作,但IE9除外.我收到以下错误:

 SCRIPT5: Access is denied
 jquery.min.js, line 2 character 68522 
Run Code Online (Sandbox Code Playgroud)

我很快发现这是一个交叉问题:

在IE上拒绝访问jQuery脚本

SCRIPT5:在xmlhttprequest上的IE9中拒绝访问

我发现这很奇怪,因为我的插件中没有交叉原点功能.问题也出现了,jquery而不是我的代码.尝试了几个建议的修复,但没有运气.

尝试了一些基本的东西.将脚本直接移动到页脚.尝试将其直接移动到标题中.尝试将我的脚本排除在外.此时拔掉我的头发.

我最好的选择是实际看到导致代码错误的原因(因为我无法在缩小版本上).此时代码直接在标题中删除了.min脚本,刷新了,TA-DA:现在一切都顺利进行.

如果我尝试my_scripts()使用wp_register_script&wp_enqueue_script将未分析的脚本声明移回函数,它将再次失败.如果我尝试将未经通知的脚本声明移动到页脚中,它将再次失败.我当时没有测试本地副本,只测试了CDN版本.

这是相同的SCRIPT5错误,但遗憾的是我没有错误产生的代码.前几天这是在办公室,我周末休息.我试图在我的个人沙箱上重现这些事件,但是在重新创建错误方面没有成功,这让我相信一些未列出的内容可能是罪魁祸首.

有谁知道这里发生了什么?为什么jquery.min在未通知的文件不会失败?为什么未通报的文件会继续失败,除非它直接在<head>

很高兴提供更多信息,虽然有些信息可能要等到我下周回到工作岗位.一旦我能够,我将尝试发布其余的代码.

debugging wordpress jquery internet-explorer internet-explorer-9

6
推荐指数
1
解决办法
1万
查看次数