2013-12-16 78 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