php - 跨域Ajax数据

标签 php jquery ajax apache nginx

我有一个要求,即通过 Ajax 获取跨域 json 数据。我需要维护 2 个不同的服务器(服务器 A 和服务器 B)。

服务器 A 仅包含静态内容。 即:JS、图像、CSS

服务器 B 仅包含动态内容 IE。 php 驱动脚本

根据上述要求,我已经在本地电脑上设置并成功配置了 Nginx + Apache 环境。

我的本​​地主机上运行着两个域。

服务器 A:http://localhost:9000/ > 在 Nginx 上运行,作为静态内容的前端

服务器 B:http://localhost:8888/ > 在 Apache 上运行,作为动态内容的后端(即 php)

服务器 A 包含

index.html jQuery 和 自定义 Ajax 处理 Java 脚本。

index.html

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="./js/jquery-1.7.2.min.js" type="application/javascript"></script>
<script src="./js/script.js" type="application/javascript"></script>
<title>Ajax</title>
</head>
<body>
<div id="result"></div>
</body>
</html>

脚本.js

$(document).ready(function(e) {
    var url = 'http://localhost:8888/drp/application/ajax.php';
        var success = function(data){
        var set = "";
            set += "Name: "+ data['fname']+ " " + data['lname']+"<br>";
            set += "Age: "+ data['age']+"<br>";
            set += "Address: "+ data['address']+"<br>";
            set += "Email: "+ data['email']+"<br>";
            set += "Web: "+ data['web']+"<br>";
            $('#result').html(set);
    };

    var error = function(jqXHR, textStatus, errorThrown){
            //alert(errorThrown);
            alert('errorThrown');
    };

    $.ajax({
          type: 'GET',   
          url: url,
          data:{todo:"jsonp"},
          dataType: "jsonp",
          crossDomain: true,         
          cache:false,
          success: success,
          error: error
    });
});

服务器2包含ajax.php,用于处理Ajax请求

ajax.php

<?php
#header('Content-Type: application/json');
header('Content-Type: application/javascript');



$x = array(

    'fname' => 'Jone',
    'lname' => 'Max',
    'age' => '26',
    'address' => 'London,Uk',
    'email' => 'jone.max@test.com',
    'web' => 'http://jonemaxtest.com',

);

print json_encode($x,true);
?>

当我调用这个前端index.html时,我可以看到这样的错误

SyntaxError: missing ; before statement 
{"fname":"Jone"...}

我尝试了很长时间,但没有得到正确的结果。每次我收到这样的错误消息。我也尝试更改 header('Content-Type: application/javascript');进入 header('Content-Type: application/json');但没有成功。

我在该代码集中哪里犯了错误......?

请帮助我。

最佳答案

尝试从服务器返回一个字符串,如下所示:

$data = json_encode($x);
echo "/**/my_callback($data);";

其中 data 是 JSON 编码数组。

并且不要忘记删除内容类型的 header 。

在您的 JavaScript 中进行 Ajax 请求,成功时:

function (data) {eval(data);}

关于php - 跨域Ajax数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19270331/

相关文章:

php - php中是否可以有一个javascript函数

php - 为什么使用 POST 方法发送值时总是收到 0(零)

javascript - 无法阻止基于ajax检查的提交

javascript - 使用 AJAX(Firefox 扩展)访问带有页面的 DOM

javascript - echo'ing 到 AJAX 回调后执行 PHP

javascript - 将 UTC 日期转换为实际日期和时间

php - 如何创建指向 cms 文章的直接链接

具有值拆分的 PHP 简单 HTML DOM 解析器

javascript - 找到没有样式显示的 div,并在每个第二个 div 上插入一个分页样式

jQuery fadeIn 函数不起作用