как отправить объект json в ajax на страницу php

#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.