Javascript 用PHP实现Ajax跨域
当我试图从php脚本获取数据时,我遇到了一个问题,我得到了这个错误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
未捕获的语法错误:意外标记您必须检查浏览器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).")";
}?>