Javascript 跨多个域的json响应
我正在做一个网站,它应该从数据库中读取标记,然后在地图上填充它们。如果我在本地工作,它工作得很好,但是当我指向一个php文件在线,因此不同的域(从db请求数据)时,我没有得到任何响应,我得到了JSON.parse:意外的数据结束。注意我不想更改php文件中的任何内容,因为另一个网站已经在使用此文件。调用和执行请求的函数如下所示。。。非常感谢你的帮助Javascript 跨多个域的json响应,javascript,json,cross-domain,Javascript,Json,Cross Domain,我正在做一个网站,它应该从数据库中读取标记,然后在地图上填充它们。如果我在本地工作,它工作得很好,但是当我指向一个php文件在线,因此不同的域(从db请求数据)时,我没有得到任何响应,我得到了JSON.parse:意外的数据结束。注意我不想更改php文件中的任何内容,因为另一个网站已经在使用此文件。调用和执行请求的函数如下所示。。。非常感谢你的帮助 function ajaxrequestDB() { var AJAX = null; // Initialize the AJAX var
function ajaxrequestDB() {
var AJAX = null; // Initialize the AJAX variable.
if (window.XMLHttpRequest) { // Does this browser have an XMLHttpRequest object?
AJAX=new XMLHttpRequest(); // Yes -- initialize it.
}
else { // No, try to initialize it IE style
AJAX=new ActiveXObject("Microsoft.XMLHTTP"); // Wheee, ActiveX, how do we format c: again?
} // End setup Ajax.
if (AJAX==null){ // If we couldn't initialize Ajax...
alert("Your browser doesn't support AJAX."); // Sorry msg.
return false // Return false, couldn't set up ajax
}
AJAX.onreadystatechange = function() { // When the browser has the request info..
if (AJAX.readyState==4 || AJAX.readyState=="complete")
{ // see if the complete flag is set.
//alert(AJAX.responseText);
var result =JSON.parse(AJAX.responseText);
//alert(AJAX.responseText);
for (var i=0; i<result.length; i++) {
for (var j=0; j<gmarkers.length; j++) {
if (gmarkers[j].myname == result[i].name) {
gmarkers[j].setVisible(true);
gcircle[j].bindTo('center', gmarkers[j], 'position');
gcircle[j].setVisible(true);
var cat = gmarkers[j].mycategory;
}
}
}
callback(AJAX.responseText, AJAX.status); // Pass the response to our processing function
} // End Ajax readystate check.
}
//var url='http://localhost/refresh.php'; //this works !
var url='http://anotherdomain.org/Scripts/refresh.php';
AJAX.open("GET", url, true); // Open the url this object was set-up with.
AJAX.send(); // Send the request.
}
function callback(x, y) {
// alert(x);
}
函数ajaxrequestDB(){
var AJAX=null;//初始化AJAX变量。
如果(window.XMLHttpRequest){//此浏览器是否有XMLHttpRequest对象?
AJAX=new XMLHttpRequest();//是--初始化它。
}
否则{//不,尝试初始化它
AJAX=new-ActiveXObject(“Microsoft.XMLHTTP”);//嘿,ActiveX,我们如何再次格式化c:呢?
}//结束设置Ajax。
如果(AJAX==null){//如果我们不能初始化AJAX。。。
警报(“您的浏览器不支持AJAX。”);//对不起,消息。
return false//return false,无法设置ajax
}
AJAX.onreadystatechange=function(){//当浏览器具有请求信息时。。
if(AJAX.readyState==4 | | AJAX.readyState==complete)
{//查看是否设置了完整标志。
//警报(AJAX.responseText);
var result=JSON.parse(AJAX.responseText);
//警报(AJAX.responseText);
对于(var i=0;iAjax查询,传统上需要发送到同一服务器,因为
您可以通过添加
<?php header("Access-Control-Allow-Origin: *"); ?>
给你一个PHP脚本
另一种选择是使用您必须使用跨域技术,如JSONP。浏览器不允许访问不同域中的服务器。检查一些提示。顺便说一句,这里经常会问类似的问题。可能重复我认为这是一个好答案。。。