#php #jquery #ajax
#php #jquery #ajax
Вопрос:
Я пытаюсь отправить объект json на страницу php demo.php использование ajax-запроса
<script type="text/javascript" charset="utf-8">
$(document).ready(function ()
{
var data =
{'name':'Sam','ID':'1345'};
var test = {}
test["data"] = JSON.stringify(data);
$("#btnsend").click(function()
{
$.ajax({
type:"POST",
url:"/demo.php",
dataType:'json',
data:test,
success: function(data)
{
console.log('success');
}
error: function()
{
console.log('failure');
}
});
});
});
</script>
Это то, что я пробовал в jQuery, но оно не отображается на моей странице php.В php я попробовал следующее:
<html>
<?php
$json = json_decode(stripslashes($_POST['data']), true);
echo var_dump($json);
?>
<body>
Hello World !!!
</body>
</html>
Но он выводит сбой в консоли. Пожалуйста, помогите мне с этим.
Комментарии:
1. Удалите из него весь HTML, он пытается проанализировать недопустимый JSON, просто закодируйте и повторите его (без vardump и т. Д., Убедитесь, Что уведомления не генерируются)!
Ответ №1:
Редактировать: мой первоначальный ответ был неправильным, причина, по которой вы переходите к error
функции, заключается в том, что вы указали:
dataType:'json',
Таким образом, jQuery ожидает, что выходные данные вашего php-скрипта будут действительными в формате json. Это не так, вы возвращаете текст / html, поэтому ваша success
функция никогда не достигается.
То, как вы настроили свой php-скрипт (вывод html), вам, вероятно, следует просто удалить:
dataType:'json',
и тогда вы перейдете к своей функции успеха.
Кстати, на вашей странице ничего не отображается, пока вы что-то не сделаете (не покажете …) data
переменную в своей success
функции:
success: function(data) {
console.log('success');
$('#some_element').html(data); // to put the output in #some_element
}
И в вашем php-скрипте вы должны отправлять только то, что вы хотите отобразить в своем html-элементе, поэтому никаких html
body
тегов or.