2012-02-29 66 views
3

我正在努力與post()方法。非常簡單的jquery post()(試圖發送html到另一頁)

我一直在閱讀這裏和jQuery論壇上的幾個帖子,只是試圖獲得一個簡單的代碼工作證明是困難的。我的最終目標是通過一個div #exportData和所有它的孩子test.php。

我開始:

$.post("ajax/test.php", $("body").html()); 

在我看來,這應該返回當前頁面的全部內容test.php的(除非test.php的要求保持股利或元素接收內容)。目前它只返回空白頁面。

我又試圖尋找爲post()的參數,如果我需要處理這些:

$.ajax({ 
     type: 'POST', 
     url: ajax/test.php, 
     data: data, 
     success: success, 
     dataType: dataType 
    }); 

而且聲明的變量:

var data = { 
     html: #exportData 
    }; 

該位失敗,當然。我不知道如何在參數中定義數據,或者如果這是正確的地方。

雖然我會想,如果:

$.post("ajax/test.php", $("body").html()); 

會工作那麼想必我可以替代「體」對任何類,ID或選擇,我喜歡。

此外,提交按鈕還需要某些參數將其綁定到發佈功能。目前它純粹是:

<input type="submit" id="submit" value="send" name="submit"> 

對不起,這是一個這樣的基本問題。

+0

您需要顯示'ajax/test.php'頁面的代碼才能幫助我們。我想你首先需要做一些更深入的探索,這將有助於你理解提交按鈕是如何工作的以及它們是如何鏈接在一起的。 – Lazarus 2012-02-29 11:07:40

回答

3

你可以做

var html = $("body").html(); 
var data = { 
     html: html 
    }; 
$.post("ajax/test.php", data); 

爲$。員額(第二個參數)是一個對象至極包含要發送到服務器的數據。

要送你能做的數據:

<input type="submit" id="submit" value="send" name="submit"> 

JS

$('input#submit').click(function(e){ 
    //prevent submitting the form (if there is a form) 
    e.preventDefault(); 
    var html = $("body").html(); 
    var data = { 
      html: html 
     }; 
    $.post("ajax/test.php", data); 
}); 

服務器端收到數據

$html = $_POST['html'] 
+0

因爲我想看看test.php的頁面加載與現在當前頁面重新加載,網址爲附有在它發表的內容我不能得到這個工作:(我真正禁用的preventDefault行動:提交=發送。代碼現在在線,所以我可以發送一個url進行測試。 – lharby 2012-02-29 11:49:19

0

$.post()預期的目標要傳遞給transfert數據以及帖子要求:

jQuery.post(URL [,數據] [,成功(數據,textStatus,jqXHR)] [,的dataType])

網址:一個包含URL字符串到該請求是發送。
data:與請求一起發送到服務器的映射或字符串。
成功(數據,textStatus,jqXHR):如果請求成功時執行的回調函數。
數據類型:類型從服務器預期的數據。默認值:智能猜測(xml,json,script,text,html)。

var content = $ ('body').html(), 
    data = { content: content }; 

$.post('ajax/test.php', data); 
+0

「data:發送到服務器的map **或string **」似乎表明一個字符串可以正常工作,雖然發送HTML的整個頁面的價值可能是一個壞主意。 – 2012-02-29 11:20:28

+0

發送整個身體=證明這一概念的作品,發送DIV一個ID將是頁面的一個較小的子集。雖然授予它可能仍然是很多的字符。 – lharby 2012-02-29 11:25:57

+0

我不認爲這是一個壞主意太發送整個頁面的HTML,甚至只是它的一部分。我想不通,爲什麼OP要做到這一點,但在技術上是可能的。 – 2012-02-29 13:46:22

0

在帖子發送HTML聽起來不像是個好主意。所有元素類型inputselect將在Html中爲空。您需要使用.serialize才能獲得值。

$('#submit').submit(function() { 
    $.ajax({ 
     type: 'POST', 
     url: 'ajax/test.php', 
     data: { 
      html: $('body').html() 
     } 
    });   
}); 
+0

在這個階段有數據中沒有表單元素我試圖傳遞給頁面,只是html,我已經閱讀了有關要改變的字符,這是我想避免的。 – lharby 2012-02-29 11:13:36