Перезаполнение select после запроса ajax - PullRequest
1 голос
/ 15 октября 2010

У меня есть выбор, который позволяет пользователю выбрать несколько вариантов. Также на этой же странице находится форма, которая позволит пользователю добавлять новые ключевые слова, которые будут отображаться в списке выбора.

Мой javascript отправляет ajax-запрос в php-скрипт, который либо возвращает сообщение об успехе, либо сообщение об ошибке, которое затем добавляется в dom.

Ajax-часть скрипта выглядит следующим образом

$.post(
        metadataAction,
        {
            dateOfUpdate:dateOfUpdateVal,
            metadataStandardName:metadataStandardNameVal,
            metadataLanguage:metadataLanguageVal
        },
        function(responseText) {
            $('body').append(responseText);
        },
        "html"
);

Я хочу заполнить параметры только после успешного добавления нового ключевого слова.

Есть ли у кого-нибудь предложения о том, как этого добиться?

Спасибо за любую помощь.

Ответы [ 3 ]

0 голосов
/ 15 октября 2010

выглядит немного странно, что вы добавляете сообщение в тело, но в любом случае ..

возвращает строку JSON, представляющую объект с двумя свойствами: success [bool], message [string]
у вас нет опыта работы с php, но если ответ будет иметь тип JSON, то jQuery (1.4.2) будет анализировать его как объект, а затем в вашей функции успеха:

function(data)
{
  if(data.success)
  {
    //append the item
  }
  //show the message
  $(msgCont).text(data.message)
}

обратите внимание, что вывсегда добирается до функции успеха, если код состояния ответа 200 (или любой другой 2XX)

0 голосов
/ 15 октября 2010

Для решения этой проблемы у меня есть скрипт php, который выводит объект json.

Если добавление прошло успешно, у json есть три свойства.

Успех, сообщение и новыйВыбрать. Я проверяю наличие успеха в своем ответе ajax. Если он присутствует, я использую метод jquery replaceWith (), чтобы обновить выбранную в данный момент форму в выбранной.

Спасибо за помощь.

0 голосов
/ 15 октября 2010
$.post(
        metadataAction,
        {
            dateOfUpdate:dateOfUpdateVal,
            metadataStandardName:metadataStandardNameVal,
            metadataLanguage:metadataLanguageVal
        },
        function(responseText) {
            $('body').append(responseText);
            $('#select_id').append('<option>'+responseText+'</option>');
        },
        "html"
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...