Использование PHP и AJAX для отправки / получения JSON с помощью формы

#php #jquery #html #ajax #json

#php #jquery #HTML #ajax #json

Вопрос:

Я пытаюсь создать простую форму с одним текстовым полем и кнопкой отправки, которая при нажатии отправляет значение в метод $.getJSON, который извлекает ответ JSON и выводит его на веб-страницу.

Могу ли я в любом случае сделать это динамически, используя AJAX и PHP? Нужно ли мне использовать метод $ .ajax для отправки значения на страницу PHP или я могу просто изменить существующий метод.

 $.getJSON(
    "https://www.googleapis.com/shopping/search/v1/public/products?callback=?",
    {
        key: "keyhere", 
        country: "US", 
        q: searchterm, 
        alt: "json" 
    },
    function(data) {

        $.each(data.items, function(i, item){

            if (item.product.images.length > 0) // sanity check
            {

            //global variables
            var link = item.product.images[0]['link'];
            var title = item.product.title;

                var listData = "<li>"   title   "</li>"   '<img title="'   title   '" src="'   link   '" />';

                $('#lists').append(listData);

                var img = $("<img/>").attr("src", link);
                $("<a/>").attr({href: link, title: "image title"}).append(img).appendTo("#images");

                console.log(data)
            }
        });
    }
);
  

Редактировать:

Благодаря SBerg413 мне удалось изменить метод на .ajax, и он отлично работает, рабочий пример ниже:

 var apiKey = "key";
var country = "US";
var apiurl = "https://www.googleapis.com/shopping/search/v1/public/products?callback=?";
var search = 'starwars';

$.ajax({
    url: apiurl,
    dataType: 'jsonp',
    data : 
    {
        key: apiKey, 
        country: country, 
        q: search,
    },
    success: function(data) {

         $.each(data.items, function(i, item){

            if (item.product.images.length > 0) // sanity check
            {

            //global variables
            var link = item.product.images[0]['link'];
            var title = item.product.title;

                var listData = "<li>"   title   "</li>"   '<img title="'   title   '" src="'   link   '" />';

                $('#lists').append(listData);

                var img = $("<img/>").attr("src", link);
                $("<a/>").attr({href: link, title: "Courtesy of James"}).append(img).appendTo("#images");

                console.log(data)
            }
        });


        // console.log(data);
        console.log(data)
    }
});
  

Комментарии:

1. То, что вы хотите сделать, легко возможно. Мне просто интересно, с какой конкретной проблемой вы столкнулись с этим?

Ответ №1:

Метод jQuery getJSON — это просто сокращение для метода ajax(). http://api.jquery.com/jQuery.getJSON / Итак, вы должны быть в состоянии использовать либо то, либо другое. Однако метод getJSON использует GET . Итак, если вы конкретно хотите использовать POST, вам лучше использовать метод ajax() .

Комментарии:

1. Или метод post(), который также является сокращением для ajax()

2. Спасибо. Могу ли я по-прежнему добавлять параметры key, country и searchterm в метод ajax()?

3. Абсолютно. Вы собираетесь сделать это так же, как вы делаете это сейчас. Посмотрите на первый пример в документации, где говорится «данные: данные». Вот куда вы помещаете свой.