Javascript ajax将数据发送到php不工作
我正在尝试使用ajax将一些数据从javascript发送到服务器,下面是js代码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://
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)但是结果仍然是空的。不幸的是,OP没有将任何数据发布到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;
?>