Javascript 用PHP实现Ajax跨域

Javascript 用PHP实现Ajax跨域,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,当我试图从php脚本获取数据时,我遇到了一个问题,我得到了这个错误 未捕获的语法错误:意外标记您必须检查浏览器url域前缀或http:// 这应该与ajax url匹配。如果要进行JSONP调用,响应必须是有效的JavaScript代码,而不是HTML 另请参见:我想另一个站点需要某种cookie集。如果没有设置,您将得到一个http错误页面,这在JS中会导致出现错误。问题在于PHP脚本,而不是javascript。你能展示一下代码吗?听起来PHP脚本并没有真正实现JSONP。它应该发回类似于t

当我试图从php脚本获取数据时,我遇到了一个问题,我得到了这个错误


未捕获的语法错误:意外标记您必须检查浏览器url域前缀或http://

这应该与ajax url匹配。

如果要进行JSONP调用,响应必须是有效的JavaScript代码,而不是HTML


另请参见:

我想另一个站点需要某种cookie集。如果没有设置,您将得到一个http错误页面,这在JS中会导致出现错误。问题在于PHP脚本,而不是javascript。你能展示一下代码吗?听起来PHP脚本并没有真正实现JSONP。它应该发回类似于
test({…})的Javascript内容类型:“应用程序/javascript”
错误。该标题用于在post数据中发送的数据类型。由于您使用的是
GET
,而不是
POST
,因此没有内容。在这一行中,您向json字符串添加一些原始文本,使其格式不同,输出不再是json:echo$\u GET['callback']。“(“.json\u encode($response)。”;是的,我查过了这不是问题:)
$.ajax({ 
    url : "http://xxxxx/xxxx/xxxx.php?callback=test",
    type : "GET",
    dataType : "jsonp",
    jsonpCallback: "test",
    contentType: "application/javascript",
    async: true,
    success : function(data) {
        console.log("success");
    },
    error : function(request, status, error) {
        console.log(error);
    }
});
<?php

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept,Authorization, X-Request-With');
header('Access-Control-Allow-Credentials: true');

test_function();
function test_function(){
    $return = array("reponse"=>"false");
    try {
        include_once $_SERVER['DOCUMENT_ROOT'].'/bd/db_connect.php';
        $db = new DB_CONNECT();
        $con = $db->connect();
        $sql = "SELECT * FROM `xxx` ";
        $result = $con->query($sql);
        if ($result->num_rows > 0) {
            $response ['reponse']="true";
            $response["data"] = array();
            while ($row = $result->fetch_assoc()) {

                $rest = array();
                $rest["xxx"] = $row["xxx"];
                $rest["xxx"] = $row["xxx"];
                array_push($response["data"], $rest);
            }

        } else {
            $response ['reponse']="false";
        }
    } catch (Exception $e) {
        $response ['reponse']="false";
    }
    echo $_GET['callback'] ."(".json_encode($response).")";
    //echo "(".json_encode($response).")";
}?>