Обновите два разных значения одним ответом AJAX - PullRequest
1 голос
/ 24 августа 2009

Я хочу обновить два разных значения одним ajax-response.

<span id="nr1">Change this</span>
<span id="nr2">and change this</span>

Теперь я могу просто изменить одно значение, я делаю так:

document.getElementById('nr1').innerHTML = xmlHttp.responseText;

Можно ли сделать что-то вроде этого:

document.getElementById('nr1').innerHTML = xmlHttp.responseText1;
document.getElementById('nr2').innerHTML = xmlHttp.responseText2;

**** ОБНОВЛЕНИЕ **** Ответ приходит от php. Я совершенно новичок в JSON.

Ответы [ 4 ]

4 голосов
/ 24 августа 2009

Нет никаких свойств responseText1 и responseText2 для XMLHTTPRequest (который, я предполагаю, ваш xmlHttp), просто responseText, поэтому вы должны вернуть что-то доступное для анализа в этом поле responseText (например, JSON). Таким образом, ваш сервер может отправить обратно {"firstResponse": "value1", "secondResponse": "value2"}, и вы можете заполнить поля из этой строки JSON. Используйте библиотеку json2.js от json.org

<script type="text/javascript" src="json2.js"></script>
. . .
var theResponse = JSON.parse(xmlHttp.responseText);
document.getElementById('nr1').innerHTML = theResponse.firstResponse;
document.getElementById('nr2').innerHTML = theResponse.secondResponse;

EDIT: Чтобы создать этот ответ JSON из PHP, вы должны использовать библиотеки PHP JSON . На странице json_encode есть несколько примеров, с которых можно начать. Другой код, который я разместил (и который публикуется в других ответах), является кодом JavaScript на стороне браузера.

$arr = array ('firstResponse'=>'value1','secondResponse'=>'value2');
echo json_encode($arr);

Поместите этот код в скрипт PHP для генерации строки JSON

{"firstResponse":"value1","secondResponse":"value2"} 

Тогда ранее опубликованный код javascript проанализирует это.

1 голос
/ 24 августа 2009

Если вы доверяете и управляете сервером, просто верните словарь в JSON для ответа и используйте его на стороне клиента. Итак:

v = eval(xmlHttp.responseText);
document.getElementById('nr1').innerHTML = v['nr1']
document.getElementById('nr2').innerHTML = v['nr2']
0 голосов
/ 24 августа 2009

использовать JSON.parse

текст ссылки

0 голосов
/ 24 августа 2009

Как уже говорилось, имеет смысл возвращать ваш Ajax-вызов как объект JSON. Я рекомендую более безопасный вызов JSONP (не знаю, можете ли вы использовать любую библиотеку, которая поддерживает это изначально).

// Your script returns this
callback123(
{
    "nr1" : "This is conten for nr1",
    "nr2" : "Some content for nr2"
});

// JavaScript callback looks like this
function callback123(data)
{
    for(var key in data)
        document.getElementById(key).innerHTML = data[key];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...