json_decode () работает неправильно

Здесь я использую простой файл html + jquery + ajax, код ajax здесь

var email = "am3042208007@gmail.com"; 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\":\"am3042208007@gmail.com\",\"username\":\"ankur_07\",\"password\":\"pass07\",\"phone_no\":\"7676715797\"}

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

пожалуйста, помогите мне из этого застрял ..

замещать

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

от

 data: {datastring : datastring}, 

Объяснение:

Вы не отправляете JSON. Вы отправляете экранированную строку (удаленное форматирование JSON), потому что вы используете JSON.stringify .

Разве вы не ожидаете результата как ассоциативного массива php случайно? Разве вы не забыли указать второй параметр (true) в функции json_decode ? Поскольку, если вы это сделали, json_decode вернет результат в качестве объекта.

Вы должны удалить разрезы \ из данных сообщения и декодировать json.

Попробуйте использовать это

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

Примечание. Убедитесь, что в этом случае stripslashes() также удалит вашу экранированную последовательность.