jQuery:将页面主体加载到变量中

时间:2011-03-13 21:35:55

标签: php javascript html ajax

我正在使用jQuery将PHP脚本的结果加载到变量中。该脚本被传递给用户使用GET请求键入的内容。我想把脚本吐出的内容放到<body>标签中。这是我尝试过的:

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(两个数字由两个感叹号隔开)。

谢谢!

4 个答案:

答案 0 :(得分:2)

您正在尝试访问由于AJAX调用的异步性质而可能未分配的dataloaded。访问它的唯一安全的地方是成功回调。您还可以使用.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>,则无效。

答案 1 :(得分:0)

不知道什么是console.log打印,很难说,但试试这些

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

或者

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

答案 2 :(得分: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()函数。不要以为你需要这里。

答案 3 :(得分:0)

我更改了我尝试获取XML的页面。我正在使用$.find从XML页面单独获取每个感兴趣的元素,这对于这个特定的应用程序来说非常适合。

这个问题已经消失,因为不再需要忽略head部分,而且我只是抓取单个XML元素。

感谢您的所有时间和帮助!