Здесь я использую простой файл 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()
также удалит вашу экранированную последовательность.