Подтвердить что ты не робот

Использование данных ответа jQuery ajax

Я использую пост ajax и получаю данные в виде html. Мне нужно разделить данные и поместить фрагменты данных по всей странице. Я построил свои данные ответа как нечто вроде <p id='greeting'> Hello there and Welcome </p> <p id='something'>First timer visiting our site eh'</p>. Это немного сложнее и динамично, но я могу понять, получится ли этот вопрос. Благодаря

$.ajax({
            type:'POST',
            url: 'confirm.php',
            data: "really=yes&sure=yes",
            success:function(data){
                    //Need to split data here
            }
        });
4b9b3361

Ответ 1

Обновление: просто понял, что вы, вероятно, должны это сделать:

success:function(data) {
    data = $('<div/>').append(data);
    $('#greeting',data).appendTo('#one')
    $('#something',data).appendTo('#two')
}

Как вы не можете использовать .find правильно, так как он не является дочерним, но если вы добавите его в пустой node, вы можете. Другой альтернативой будет использование .filter

$.ajax({
            type:'POST',
            url: 'confirm.php',
            data: "really=yes&sure=yes",
            success:function(data){
                    $('#greeting',data).appendTo('#one')
                    $('#something',data).appendTo('#two')
            }
        });

Вы можете извлечь из data и добавить туда, где хотите. Вы также можете сделать что-то вроде возврата JSON вместо этого, а вместо извлечения html из html просто получить доступ к html из объекта.

$(data.greeting).appendTo('#one')
$(data.something).appendTo('#two')

Ответ должен быть таким:

({ 'greeting':'html', 'something' :'other html' })

Ответ 2

Почему бы вам не объединить ответы в confirm.php с символом |, а затем, когда строка будет возвращена в качестве данных переменной, вы можете разделить ее на datas = data.split("|") и получить доступ к отдельным ответам с помощью data[0], data[1] и т.д.

Ответ 3

(Ответ на Meder будет работать, если вам будет удобно с JSON, но регулярные выражения, вероятно, немного легче и будут работать так же хорошо для этого.)

Вероятно, вам придется разбить текст ответа, используя регулярные выражения. Например, если текст ответа:

<p id='greeting'> Hello there and Welcome </p>
<p id='something'>First timer visiting our site eh'</p>

Затем вы можете использовать JavaScript следующим образом:

var greeting = response_text.match(/<p id='greeting'>.*</p>/);
var something = response_text.match(/<p id='something'>.*</p>);

(Этот сайт отлично подходит для изучения регулярных выражений: http://gskinner.com/RegExr/)