我正在尝试使用ajax将来自JavaScript的一些数据发送到服务器,以下是js代码。
var username = document.getElementById("username_id").value;
var array = ["p","c"];
var jsonString = JSON.stringify(selectedLocation);
if(!jsonString) jsonString = "";
var url = "http://anotherserver/createNewUser.php";
url = 'proxy.php?url='+url;
$.ajax({ url: url,type: "POST",data: {username:username,datas:jsonString}, dataType: "json",
success: function (jsonStr) {
var username = jsonStr.Username;
},
error: function(jqXHR, textStatus, errorThrown){
}
});
在php中,我得到的是这样的变量
<?php
$username=$_GET["username"];
$datas = json_decode(stripslashes($_POST['datas']));
$u= array('Username'=>$username);
echo json_encode($u);
return;
?>
我成功获得响应,但是username
始终为空。
可能是问题所在。
编辑:
proxy.php
<?php
header('Content-type: application/json');
$url=$_GET['url'];
//echo $url;
if (is_string($url)) {
$url = urldecode($url);
}
$json=file_get_contents($url);
echo $json;
?>
答案 0 :(得分:6)
您通过发布方法type: "POST"
发送ajax,并通过$_GET
在服务器上获取数据
将其更改为$_POST
答案 1 :(得分:2)
在服务器端脚本上使用$ _GET方法时,您正在使用POST方法将数据发送到服务器。
<?php
/*$username=$_GET["username"];*/
$username=$_POST["username"];
$datas = json_decode(stripslashes($_POST['datas']));
$u= array('Username'=>$username);
echo json_encode($u);
/* $data = json_decode(file_get_contents('php://input'), true);
print_r($data); */
return;
?>