Javascript ajax将数据发送到php不工作

Javascript ajax将数据发送到php不工作,javascript,php,ajax,Javascript,Php,Ajax,我正在尝试使用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://

我正在尝试使用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;
?>

您可以通过post方法
发送ajax,键入:“post”
,并通过
$\u GET


将其更改为
$\u POST

当您在服务器端脚本上使用$\u 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;
?>


尝试使用
$username=$\u POST[“username”]
假设PHP代码段来自
createNewUser.PHP
,那么
proxy.PHP
到底做了什么?您确定您的url正确吗
proxy.php/?url=createNewUser.php
?从未见过像这样的建筑that@mtizziani看起来应该是
proxy.php?url=createNewUser.php
。不确定从何处获得正斜杠1)您需要在JavaScript中正确编码
url
查询参数(请参见
encodeURIComponent()
)。2)
file\u get\u contents()
默认情况下将通过get加载远程URL。这可以通过
$context
参数进行更改。请参阅PHP手册。3) 您发布到
proxy.php
的任何数据都不会自动传递到远程URL。您需要手动将内容添加到HTTP上下文中。再次参考PHP手册,我已将代码更改为
$username=$\u POST[“username”]$u=数组('Username'=>$Username);echo json_编码($u)createNewUser.php
。它们也不提供任何查询参数,而这些参数是由
$data=json\u decode(file\u get\u contents('php://input",对),?只是从服务器读取json数据。因为json是作为原始数据而不是传统的key=>value对发送的。这里的第二个参数是将json_解码转换为一个关联数组。不是真的。它只是发布在
$\u POST['datas']
中的一个字符串。所以它应该是
$data=json\u decode($\u POST['datas'],true)。不过,也应该有一些检查,因为它似乎有时可能包含一个空字符串。我编辑了我的答案。谢谢你让我意识到我犯了一个错误。不用担心。但是,您应该能够删除
stripslashes()
。这是不必要的。
<?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;
?>