2011-03-13 31 views
0

我正在使用jQuery將PHP腳本的結果加載到變量中。該腳本被傳遞給用戶使用GET請求輸入的內容。我只想將劇本吐出的標籤放在<body>標籤中。以下是我已經試過:jQuery:將頁面正文加載到變量中

JS:

function loader() { 
    var typed = $('#i').val(); //get what user typed in 
    $.get("script.php", {i: typed}, function(loaded) {dataloaded = loaded;}); 
    alert($(dataloaded).find('body')) 
} 

但它只是顯示[Objec object]。我怎樣才能獲得一個有用的值,它只是一個加載頁面的主體內容?

我知道PHP的作品,我只需要JS。
腳本echo有點像1!!2(兩個數字由兩個感嘆號分隔)。

謝謝!

+0

dataloaded的價值是什麼? – errorhandler 2011-03-13 21:38:46

回答

0

我改變了我試圖抓取到XML的頁面。我使用$.find從XML頁面中單獨獲取每個感興趣的元素,這非常適合這個特定的應用程序。

這個問題已經消失,因爲不再有head部分要忽略,我只是抓住了單個XML元素。

感謝您的所有時間和幫助!

2

您正試圖訪問dataloaded,由於AJAX調用的異步性質,可能不會分配這些信息。訪問它的唯一安全地點在成功回調中。你也可以使用.html()函數來獲取身體標記的內容:

function loader() { 
    var typed = $('#i').val(); //get what user typed in 
    $.get('script.php', { i: typed }, function(loaded) { 
     alert($(loaded).find('body').html()); 
    }); 
} 

還要注意的是,如果只script.php呼應1!!2沒有<body>標籤將無法正常工作。

+0

這只是顯示'null'。離開'.html()'顯示相同的[[Object object]]。有任何想法嗎? – Nathan 2011-03-13 23:07:50

+0

@Nathan G.,不知道,而不是使用警報來調試您的JavaScript代碼我強烈建議你[FireBug](http://getfirebug.com/)。它會爲您提供更多有關AJAX請求的信息,並最終幫助您解決問題。 – 2011-03-13 23:09:42

+0

Firebug info here:http://i.imgur.com/TQrcw.jpg – Nathan 2011-03-13 23:29:15

0

不知道的console.log打印什麼還很難說,但嘗試這些

alert($(dataloaded).find('body').html()); 

或者

alert($(dataloaded).find('body').text()); 
+0

'.html'只顯示'null'。 '.text()'顯示一個空的對話框。有任何想法嗎? – Nathan 2011-03-13 23:08:24

0

使用JSON類型。我不確定你的JQuery腳本是否正確,但是如果使用正確的JSON來解決問題。即:

function loader() { 
    var typed = $('#i').val(); //get what user typed in 
    $.get("script.php", {i: typed}, function(loaded) {dataloaded = loaded;},"json"); 
    alert($(dataloaded).find('body')) 
} 

和編碼JSON後script.php POST變量。使用Php的json_encode()函數。您需要創建一個數組作爲變量。例如:

<?php 
$title = 'Hello World'; 
$content = 'Get well soon Japan!'; 
$arr=array('title'=>$title,'content'=>$content); 
echo json_encode($arr); 
?> 

和jQuery會是這樣的:

function loader() { 
var typed = $('#i').val(); //get what user typed in 
$.get("script.php", {i: typed}, function(loaded) {var dataloaded = loaded.title+" "+loaded.content;},"json"); 
$("body").html(dataloaded); 
} 

您可能需要使用jQuery的parseJson()函數的一些情況。不要以爲你需要在這裏。

+0

使用你的代碼我從腳本中根本得不到任何東西。 – Nathan 2011-03-13 23:54:40

+0

那麼,我沒有在我的電腦上測試過jquery腳本,它是否真的導致編輯器沒有打開並且很快就會睡覺。但我相信JSON類型將解決這個問題。你應該在你的PHP文件中回顯編碼數組。 – Kemal 2011-03-13 23:58:32

+0

@Nathan G.我如果我不明白你想寫在身體內部抓取文本。看看我的更新。 – Kemal 2011-03-14 09:27:08