2013-12-16 54 views
3

在这里,我用简单的HTML +的jQuery + AJAX文件 Ajax代码是在这里json_decode()无法正常工作

var email = "[email protected]"; 
var username = "ankur_07"; 
var password = "pass07"; 
var phone_no = "7676715797"; 
var datastring = { 
    "email": email, 
    "username": username, 
    "password": password, 
    "phone_no": phone_no 
}; 

      $.ajax({ 
       type: "POST", 
       url: "../test/testreg.php", 
       data: {datastring : JSON.stringify(datastring)}, //with the page number as a parameter 
       dataType: 'html', //expect html to be returned 
       async: false, 
       success: function (data) { 
        alert(data); 
        /*if(data=="hello"){ 
         message = "Mail Sent Successfully"; 
        } else { 
         message = "Oops, mail doesn't send.!!!"; 
        } 
        alert(message);*/ 
       } 
      }); 
      return false; 

我从这个文件和蚂蚁发送JSON在另一个testreg.php文件 得到但它没有解码JSON其表现如下线使用echo {\"email\":\"[email protected]\",\"username\":\"ankur_07\",\"password\":\"pass07\",\"phone_no\":\"7676715797\"}

if(isset($_POST['datastring'])) 
{ 
      $data = $_POST['datastring']; 
      $data = json_decode($data); 

      print_r($data); 
    } 

请帮我出这个卡死..

+0

检查json错误如果在json_decode之后使用了函数'json_last_error();'。 – Rikesh

+0

可能[Magic Quotes](http://www.php.net/manual/en/security.magicquotes.php)?! – deceze

+0

@Rikesh我们通过json_last_error()发现错误; – AndyBoy

回答

2

通过

data: {datastring : datastring}, 

说明更换

data: {datastring : JSON.stringify(datastring)}, 

您还没有发送JSON。您发送转义字符串(删除JSON格式),因为您使用JSON.stringify

+0

可以请你给我什么是正确的方法来取代这一个 – AndyBoy

+0

你能告诉我如何将json传递给php文件。请我不是在指责你,但想了解更多,所以请... – AndyBoy

+0

删除'JSON.stringify',看到我的回答取代行 – DanFromGermany

0

难道你不期望的结果作为php偶合数组吗?您是否忘记在json_decode函数中提供第二个参数(true)?因为如果你这样做,json_decode将返回结果作为对象。

+0

我尝试了第二个参数也没有变化 – AndyBoy

0

您必须从发布数据中去除斜杠\并解码json。

请尝试使用此

$data = json_decode(stripslashes($data), true); 

注:请确保在这种情况下stripslashes()也将删除你的逃脱序列。

+0

这是我的代码感谢 – AndyBoy

+1

这是一个讨厌的workarround,而不是一个很好的解决方案,因为你去掉了你需要的斜线,并且你从你想要的逃逸字符中去掉斜杠。你怎么能接受这个答案...怎么能有人给出这样不好的建议.. – DanFromGermany

+0

@丹弗罗姆德尔曼我同意你的意见。 – Parixit