jQuery: загрузить тело страницы в переменную - PullRequest
0 голосов
/ 14 марта 2011

Я использую 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 s похож на 1!!2 (два числа, разделенные двумя восклицательными знаками).

Спасибо!

Ответы [ 4 ]

2 голосов
/ 14 марта 2011

Вы пытаетесь получить доступ к dataloaded, который может быть не назначен из-за асинхронного характера вызовов AJAX. Единственное безопасное место для доступа - это обратный вызов. Также вы можете использовать функцию .html(), чтобы получить содержимое тега body:

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 голосов
/ 14 марта 2011

Я изменил страницу, которую пытаюсь получить, в XML.Я использую $.find для получения каждого интересующего элемента по отдельности со страницы XML, которая хорошо подходит именно этому приложению.

Эта проблема исчезла, так как больше нет раздела head, который можно игнорировать,и все равно я просто беру отдельные элементы XML.

Спасибо за ваше время и помощь!

0 голосов
/ 14 марта 2011

Использовать тип JSON. Я не уверен, что ваш скрипт Jquery правильный или нет, но использование JSON с правильным использованием решит проблему. ie.:

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'))
}

И переменная POST из script.php после кодирования JSON. Используйте функцию 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);
}

В некоторых ситуациях вам может понадобиться использовать функции parseJson () Jquery. Не думайте, что вам здесь понадобится.

0 голосов
/ 14 марта 2011

Не зная, что печатает console.log, трудно сказать, но попробуйте эти

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

или

alert($(dataloaded).find('body').text());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...