Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
Jquery 两个测试站点,ajax只在一个站点上工作_Jquery - Fatal编程技术网

Jquery 两个测试站点,ajax只在一个站点上工作

Jquery 两个测试站点,ajax只在一个站点上工作,jquery,Jquery,我有两个开发站点调用api.localhost和game.localhost。两者都是从Apache的旧版本运行的,该版本与在物理服务器上运行的版本相同,因此我不想更改它,除非我必须更改它。我还运行了一个旧版本的PHP(我也不想更新它,除非我必须更新) 问题是,如果我在api.localhost上运行一个测试页面(如下所示),它就可以正常工作。如果我在game.localhost上运行相同的页面,那么它会失败。起初我认为失败是由于jquery.jsonrpc造成的,这是我当时使用的,所以我只使用

我有两个开发站点调用
api.localhost
game.localhost
。两者都是从Apache的旧版本运行的,该版本与在物理服务器上运行的版本相同,因此我不想更改它,除非我必须更改它。我还运行了一个旧版本的PHP(我也不想更新它,除非我必须更新)

问题是,如果我在
api.localhost
上运行一个测试页面(如下所示),它就可以正常工作。如果我在
game.localhost
上运行相同的页面,那么它会失败。起初我认为失败是由于jquery.jsonrpc造成的,这是我当时使用的,所以我只使用jquery ajax调用。我将调用的index.php文件的响应简化为一个简单正确的通用jsonrpc响应。实际的ajax调用来自另一个SO问题。firebug控制台在请求的红色字符串之后意外地说
200OK
,但下面没有响应

我所看到的事情:

  • 两个站点上都有相同版本的jquery
  • 虚拟主机看起来不错。它们的不同之处在于错误日志文件名不同
  • 除了许多favicon错误外,错误日志中没有任何内容
  • 主机文件看起来不错。没有什么不寻常的
index.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>test</title>
<head>
<body>
<script type="text/javascript" src="jquery.js"></script>
<script>
$(document).ready(function() {
    $.ajax({ 
        url: 'http://api.localhost/index.php',  
        data: JSON.stringify({jsonrpc:'2.0',method:'add', params:[1400,2100],id:"jsonrpc"}),  // id is needed !! 
        type:"POST", 
        dataType:"json", 
        success: function (result) {  
            alert("ok"); 
        }, 
        error: function (err,status,thrown) { 
            alert ("this syntax sucks!! " + " ERROR: " + err + " STATUS: " + status + " " + thrown ); 
        }, 
        complete: function (xhr,status) {  
            alert('Complete=>  showing status as: '+ status);  
            data = $.parseJSON(xhr.responseText);   
            alert (data); 
        }  
    }); 
});
</script>
test
</body>
</html>

测试
$(文档).ready(函数(){
$.ajax({
网址:'http://api.localhost/index.php',  
数据:JSON.stringify({jsonrpc:'2.0',方法:'add',参数:[14002100],id:'jsonrpc'}),//需要id!!
类型:“POST”,
数据类型:“json”,
成功:函数(结果){
警报(“正常”);
}, 
错误:函数(错误、状态、抛出){
警报(“此语法糟透了!!“+”错误:“+err+”状态:“+STATUS+”+”+抛出);
}, 
完成:函数(xhr,状态){
警报(“完成=>显示状态为:”+状态);
data=$.parseJSON(xhr.responseText);
警报(数据);
}  
}); 
});
测试
api.localhost/index.php

<?php
print '{"jsonrpc": "2.0", "result": 19, "id": 1}';
?>

是什么阻止了请求的进行和服务?

阻止您在子域之间进行AJAX调用

您可以尝试添加此行以允许跨子域请求:

document.domain = "localhost";

另一种方法是使用相同的源代码策略。

在实时服务器上也可以吗?这种方法的缺点是什么?没有生成响应-甚至没有失败消息。CORS似乎是一条出路。