Проблема с JQuery Ajax ... как я могу обновить два DIV с одним вызовом Ajax? - PullRequest
0 голосов
/ 28 января 2010
function ajaxCall(query){
$.ajax({
    method:"get",
    url:"/main/",
    data:"q="+query,
    beforeSend:function() {},
    success:function(html){
        $("#main").html(html);
    }
    });
};

Это весь код, который будет заполняться # main :

<p>{{ num_results }}, you just searched for {{ query }}</p>

Предположим, у меня есть еще один div, называемый $ ("вторичный") .... как бы я заполнил это {{num_results}} , который является частью кода, а не всего этого?

Ответы [ 4 ]

6 голосов
/ 28 января 2010

Один из вариантов - вернуть json с данными, необходимыми для каждой области.

$.ajax({
    method:"get",
    url:"/main/",
    dataType: "json",
    data:"q="+query,
    beforeSend:function() {},
    success:function(json){
        $("#main").html(json.main);
        $("#secondary").html(json.secondary);
    }
});

Что бы вы возвращали:

{
    "main": "<p>{{ num_results }}, you just searched for {{ query }}</p>",
    "secondary": "{{ num_results }}"
}
1 голос
/ 28 января 2010

Вам потребуется вернуть объект XML или JSON из запроса, который будет использоваться для заполнения только соответствующих частей. Попробуйте что-то вроде этого:

function ajaxCall(query){
$.ajax({
    method:"get",
    url:"/main/",
    data:"q="+query,
    beforeSend:function() {},
    success:function(html){
        $("#main").html(html.main);
        $("#secondary").html(html.secondary);
    }
    });
 };

Вам также потребуется обновить серверную часть, чтобы она возвращала объект JSON.

0 голосов
/ 28 января 2010
$('#secondary').html($('#main p').html().split(',')[0]);
0 голосов
/ 28 января 2010

Используйте регулярное выражение

success:function(html){
        $("#main").html(html);
        $("secondary").html( /.*?(?=,)/.exec(html) );
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...