xmlhttp.responseText;возвращать результаты HTML всей страницы, а не просто список параметров? - PullRequest
0 голосов
/ 26 января 2012

У меня есть компонент Joomla для управления мастерскими.

В режиме редактирования у меня есть, помимо прочих, 3 списка выбора:

  1. список тем
  2. список уровней
  3. призовая валюта

Я пытаюсь заполнить параметры списка уровней в зависимости от того, что было выбрано в параметрах списка тем.

Итак, в список обмена тем я добавил вызов в файл .js, содержащий запрос AJAX:

var xmlhttp;

function listUpdate(str)
{
if (str=="")
{
    document.getElementById("jform_work_topic_level_idfk").innerHTML="";
    return;
}
xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
    alert("Browser does not support HTTP Request");
    return;
}
var url = document.URL+"&tid="+str;
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);
}

function stateChanged()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
             document.getElementById("jform_work_topic_level_idfk").innerHTML=xmlhttp.responseText;
}
}

function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
    // code for IE7+, Firefox, Chrome, Opera, Safari
    return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
    // code for IE6, IE5
    return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}

Он работает правильно, и параметры списка уровней заполняются желаемыми значениями в зависимости от того, что было выбрано в списке тем. Проблема в том, что список уровней не просто заполняется этими опциями, НО ТАКЖЕ опциями списка тем и валюты приза.

Я думаю, что это потому, что xmlhttp.open ("GET", url, true); запрашивает URL, который генерирует всю форму html и xmlhttp.responseText; возвращает весь код HTML-страницы. Как я могу сделать, чтобы просто получить параметры для списка уровней?

Большое спасибо!

1 Ответ

0 голосов
/ 26 января 2012

У вас есть два варианта получения определенных данных AJAX.

Вы можете отправить запрос на сервер, чтобы получить только определенные значения, и позволить сценарию на стороне сервера разделить его. Например, вы можете загрузить страницу с аргументом GET, равным ?stuff=a, и указать PHP или сценарию CGI отфильтровать постороннее содержимое, если ($_GET["stuff"] == "a"). Вероятно, это самый быстрый и безопасный способ сделать это.

Ваш второй вариант - отфильтровать его на клиенте сразу после получения запроса, хотя это медленнее и более рискованно.

Прошу прощения, если я неправильно понял ваш вопрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...