通过POST从ajax调用PHP页面获取JSON数据

Coo*_*mer 5 javascript php ajax jquery json

我想从进行AJAX调用的表单中获取一些数据。我在PHP页面中以字符串形式获取数据。字符串看起来像

'fname':'abc','lname':'xyz','email':'','pass':'','phone':'','gender':'','dob':''

现在,我想将整个字符串转换为数组,看起来像[“ fname”] =>“ abc”,[“ lname”] =>“ xyz” ...等等

ajax调用如下所示:

fname = $("#form-fname").val();
lname = $("#form-lname").val();
email = $("#form-username").val();
pwd = $("#form-password").val();
phone = $("#form-phone").val();
gender = $("#form-gender").val();
dob = $("#form-dob").val();
var user = {"fname":fname,"lname":lname,"email":email,"pass":pwd,"phone":phone,"gender":gender,"dob":dob};
$.ajax({
      type: "POST",
      url: "doRegistration.php",
      data: user
 })
 .done(function( msg ) {                        
       window.location.href = "../profile.php";
 })
 .fail(function(msg) {
       sessionStorage.setItem("success","0");
       window.location.reload();
 }); 
Run Code Online (Sandbox Code Playgroud)

这是我的PHP代码:

$content = file_get_contents("php://input");
file_put_contents("log1.txt",$content); //This produces the string I get above
Run Code Online (Sandbox Code Playgroud)

现在我尝试将字符串如上所述转换为数组

$dec = explode(",",$content);
$dec1 = array();
for($i=0;$i<count($dec);$i++)
{
    $dec1[i] = substr($dec[i],strpos($dec[i],":"));
}
//After this $dec1 is empty and count($dec1) gives 0.
Run Code Online (Sandbox Code Playgroud)

但这没有给我所需的数组。我在这里检查了几个答案,但是它们不能解决我的问题。我试图用谷歌搜索,但没有找到任何解决方法。代码有问题吗?请帮助。提前致谢。

spl*_*h58 4

更改引号并添加大括号。然后你可以解码生成的 json

$string = "'fname':'abc','lname':'xyz','email':'','pass':'','phone':'','gender':'','dob':''";

print_r(json_decode('{' . str_replace("'", '"', $string) . '}', true));
Run Code Online (Sandbox Code Playgroud)

结果

Array
(
    [fname] => abc
    [lname] => xyz
    [email] => 
    [pass] => 
    [phone] => 
    [gender] => 
    [dob] => 
)
Run Code Online (Sandbox Code Playgroud)