Получить несколько значений через запрос AJAX - PullRequest
0 голосов
/ 27 июня 2009

Эй, ребята, я новичок в AJAX и работаю над сценарием оценки, но я хочу иметь возможность передавать несколько значений обратно в мою функцию ajax:

Прямо сейчас он запускает скрипт php, называемый рейтингами, где он берет общее количество голосов / голосов и умножает его на ширину каждого начала, чтобы получить точный текущий рейтинг. Я хотел бы также передать количество голосов, чтобы я мог их отобразить. Я знаю, как я мог бы сделать это, выполнив другую функцию, но это кажется излишним и не очень эффективным.

Мой вопрос заключается в том, можно ли вернуть не только ширину (значение / голосов * 22) для моего поля рейтинга, но и общее количество голосов в одном запросе. Если не лучший вопрос, лучше ли было бы вернуть строку в jquery, которая уже имеет голоса и значение, и выполнить вычисление ширины с помощью java-скрипта?

    $(document).ready(function() {
    getRating();
    function getRating(){
    $.ajax({
    type: "GET",
    url: "../includes/rating.php",
    data: "action=get&bookid="+$("#current").attr("value"),
    cache: false,
    async: false,
    success: function($rating) {
    $("#current").css({ width: "" + $rating });
    },
    error: function(result) {
    alert("Error");
    }

});
}

Спасибо!

Ответы [ 3 ]

3 голосов
/ 27 июня 2009

Да, вы можете вернуть оба значения. Просто отправьте JSON, используя json_encode вместо текста.

$(document).ready(function() {
    getRating();
    function getRating(){
    $.ajax({
    type: "GET",
    dataType: 'json',
    url: "../includes/rating.php",
    data: "action=get&bookid="+$("#current").attr("value"),
    cache: false,
    async: false,
    success: function(data) {
        $("#current").css({ width: "" + data.rating });
        $("#votes").html(data.votes);
    },
    error: function(result) {
        alert("Error");
    }

});
}
1 голос
/ 27 июня 2009

Поскольку ширина является производным значением, основанным на количестве голосов, я передам количество голосов и выполню математические операции в Javascript.

1 голос
/ 27 июня 2009

Если вы пытаетесь передать несколько значений в одном обратном вызове, вы можете попробовать вставить случайный символ (например, символ #, который вы не собираетесь использовать) между значениями, а затем разделить его на стороне сервера. Например.

Клиентская сторона ...

var callback = value1##value2##value3;

Серверная сторона ...

$values = split($callback, "##");

$value1 = $values[0];
$value2 = $values[1];

Надеюсь, это поможет ...

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