早安社区,
目前我在Javascript中编写了一个插件(管理一个名为“Construct 2”(scirra.com)的开发工具的帐户),它使用PHP后端并通过AJAX与它通信。
当后端脚本只包含简单的任务时,例如......
<?php header("Access-Control-Allow-Origin:*"); // Allow all origins
$InputAction = $_POST["Action"]; // Eventhandler
if ($InputAction == "Register") {
echo("-400") } ?>
一切正常。但是当我把更复杂的东西放进去时,我想要包括在内,我总是得到一个CORS拒绝:
XMLHttpRequest cannot load http://api.proxy.wtf/debug.php. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.0.14:50001' is therefore not allowed access. The response had HTTP status code 500.
我用于上述错误的代码:
<?php
header("Access-Control-Allow-Origin:*"); // Allow all origins
require('includes/config.php'); // Prerequisite
/** Numeric callbacks (!negative values!)
-200 Registration successful; validation mail sended
-250 Username OK
-300 Username too short
-301 Username already in use
-302 Password too short
-303 Invalid email address
-304 Email already in use
-305 Error while registration
-400 Illegal request
**/
$InputAction = $_POST["Action"]; // Eventhandler
$InputUsername = $_POST["Username"]; // Requesting username
$InputMailaddress = $_POST["Mailaddress"]; // Requesting mail address
$InputPassword = $_POST["Password"]; // Requesting password
if ($InputAction == "Register") { // Action: Register
if(strlen($InputUsername) < 3){ // Check Username length
$error[] = 'Username is too short.';
echo("-300");
} else { // Check if username already exists
$stmt = $db->prepare('SELECT username FROM members WHERE username = :username');
$stmt->execute(array(':username' => $InputUsername));
$row = $stmt->fetch(PDO::FETCH_ASSOC);
echo("-250");
if(!empty($row['username'])){ // If username already taken
$error[] = 'Username provided is already in use.';
echo("-301");
}
}
}
else {
echo("-400");
}
?>
有人对我有所了解,我做错了什么?语法不包含错误(据我所知)。除非我不是php / ajax的专家,否则我认为这里的一些想法可以帮助我/指出我错误的地方。我愿意学习 - 所以,如果我做了像常见错误的事情,请告诉我:s
祝你有美好的一天, 谈
编辑: 继续JS部分http://pastebin.com/iABkRmt0(重新开始的东西从第115行开始 - 它是C2的完整JS SDK脚本,对不起 - 但至少它完整;)
答案 0 :(得分:-1)
你必须使用jsonp,
我给你一个Jsonp用法的例子,希望这会对你有所帮助
$.ajax({
url: "http://data.acgov.org/resource/k9se-aps6.json?city=Alameda",
jsonp: "$jsonp",
dataType: "jsonp"
}).done(function(data) {
console.log("Request received: " + data);
});
答案 1 :(得分:-1)
你还没有提到ajax代码..是ajax请求也是从同一个url发起的,还是单独的......?