Селектор функции jQuery .Ajax (), хранит определенные данные в переменной - PullRequest
4 голосов
/ 23 февраля 2010

Я новичок в jQuery , и у меня возникла следующая проблема.

Мой проект, скажем, 2 страницы, 1.JSP и 2.html. Теперь я хочу выбрать выбранные данные из 2.html и использовать их на 1.JSP. Теперь это было легко достигнуто с помощью .load, но я хочу, чтобы данные присутствовали в переменной JavaScript, а не помещались на странице (теги div и т. Д.), Чтобы я мог работать с этими данными (изменять или добавлять в базы данных).

Я попытался использовать .ajax и смог написать следующий код:

    var value = (function () {
        var val = nulll;
        var filename = " 2.html";

        $.ajax ({
            'async': false,
            'global': false,
            'url': filename,
            'success' : function(data) {
                val = data;
            }
        })
        return val;
    })()
    document.write(value)

Куда поместить формат селектора (скажем, div.id5), чтобы в моей переменной были только релевантные данные, а не полные данные файла?

Ответы [ 3 ]

1 голос
/ 23 февраля 2010
function modify_data(data){
....
}

$.ajax({
   type: "POST", //POST OR GET
   url: "1.JSP", // URL TO SEND AJAX DATA TO
   data: "name=John&location=Boston", // DATA TO SEND
   success: function(data){ // CALLBACK FUNCTION
     modify_data(data);// sending data to another function to play with it
     $('body').html(data);
   }
 });

Как отправить запрос Ajax и распечатать его на теле после изменения полученных данных.

0 голосов
/ 01 апреля 2010

Полагаю, вы ссылаетесь на способность функции $ .load () получать селектор jquery вместе с URL-адресом для фильтрации результата. То есть сегодня вы делаете это так:

$('div').load('2.html div.id5');

Так что вы действительно хотите сделать то же самое, используя функцию $ .ajax (). Я считаю, что самый простой способ сделать это - использовать функцию jfery .find () внутри функции события 'success' (я опускаю весь вызов .ajax (), просто набираю код события success):

success: function (data) {
    val = $(data).find('div.id5').html(); 
    // now you ony have that specific div's contents
}

Я видел несколько других ошибок в вашем JavaScript-коде, которые, я думаю, вы захотите исправить (если вы на самом деле используете этот код).

    // null is defined with 2 ls
    var val = nulll;

    // Is the space on purpose?
    var filename = " 2.html";
0 голосов
/ 23 февраля 2010

Допустим, у вас есть 1.html и 2.html, а внутри тела 2.html у вас есть это:

<body>
<h1 id="foo">hello</h1>
</body>

Тогда в вашем 1.html вы получите текст внутри H1, например:

var filename = " 2.html";

$.ajax ({
    'async': false,
    'global': false,
    'url': filename,
    'success' : function(data) {
        var html = $(data);
        html.each(function() {
            if(this.tagName && this.tagName == 'H1') {
                alert( $(this).html() ); 
            }
        })
    }
})

Это должно выдать раздражающее предупреждение JS с надписью 'hello'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...