jQuery копирует данные, возвращенные из $.post, на страницу

#jquery

#jquery

Вопрос:

Я использую $.post для отправки формы на сервер. Затем сервер возвращает html-страницу. Я хочу заменить текущее содержимое страницы тем, что возвращается с сервера. Как бы я это сделал, используя jquery?

код пока:

 $('.autosave').click(function(){
    var url = 'post form url';

    $postData = $('#page-form').serialize();

    $.post(url, $postData, function(data){
             PAGE SOURCE = data
    });

    return false;
});
  

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

1. какова цель изменения всего html, разве это не то же самое, что перенаправить страницу на нужную страницу, сгенерированную вашим серверным кодом?

2. С какой стати вам это делать? Используйте обычную форму. Весь смысл XMLHttpRequest в том, чтобы позволить вам делать не это .

Ответ №1:

На самом простом уровне…

$('body').html(data);

Предполагая, что ответ — это именно то, на что вы хотите заменить, и вы хотите заменить все в теле документа.

Ответ №2:

Просто используйте .load()

 $('.autosave').click(function(){
    $('#result').load('ajax/test.html #container');    
    return false;
});
  

Ответ №3:

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

 $.post(url, $postData, function(response)
{
     // this works for any valid css selector, so "body" 
     // and ".class_name" works too
     $('#container').html(response);
});
  

Ответ №4:

Для замены содержимого заданным HTML-кодом вы можете использовать .replaceWith()

Предполагая, что ваш div имеет класс «MyContent»,

 $(".myContent").replaceWith(data);
  

Надеюсь, это поможет.

Ответ №5:

на самом деле вы можете использовать $("html").load(url "?" $postData); вместо

 $.post(url, $postData, function(data){
         $("html").html(data);
});
  

это также изменит заголовок вашей страницы и другое содержимое внутри ваших head тегов. однако имейте в виду, что ваши загруженные script теги впоследствии не будут доступны в DOM

Ответ №6:

Вы можете заменить html-элементы на своей странице, но не весь html. Представьте, что вы переустанавливаете свою ОС «на лету».

Кстати, если вы хотите вставить свои данные в <div id="item"> , вы можете сделать это:

 $.post(url, $postData, function(data){
    $('#item').html(data);
});
  

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

1. уверен, что вы можете. $('html').html(data) сделает это

2. @Jules если ты можешь что-то сделать, это не значит, что ты мог бы это сделать. 🙂

3. по-видимому, я не очень знаком с разницей между could и can 🙂 я просто говорю, что вы можете. пока вы говорите: «вы можете заменять элементы, но [вы можете] не [заменять] весь html». итак, говоря, что вы не можете, было бы это то же самое, что вы могли бы?

4. круто, я все еще не понимаю разницы между could и can, хотя. но, возможно, мне лучше перейти к english.stackexchange.com для этого 🙂