Передача массива с помощью ajax - не может печатать - PullRequest
0 голосов
/ 19 августа 2011

Я надеюсь, что эта проблема очень проста, я сам не могу найти решение, кажется.Я пытался гуглить часами, сводя меня с ума :) Хорошо, у меня есть сортировка drag'n'drop + (использующая scriptaculous и prototype для вашей информации) на моем index.php .Я использую этот код для отправки элементов, сброшенных в div, используя этот код:

<script type="text/javascript">
//<![CDATA[  
    document.observe('dom:loaded', function() {  
        var changeEffect;  
    Sortable.create("selectedSetupTop", {containment: ['listStr', 'selectedSetupTop'], tag:'img', overlap:'vertical', constraint:false, dropOnEmpty: true,
        onChange: function(item) {
            var list = Sortable.options(item).element;
            $('changeNotification').update(Sortable.serialize(list).escapeHTML());
            if(changeEffect) changeEffect.cancel();
            changeEffect = new Effect.Highlight('changeNotification', {restoreColor:"transparent" });
        },          
        onUpdate: function(list) {
            new Ajax.Request("script.php", {
                method: "post",
                parameters: { data: Sortable.serialize(list), container: list.id }
                onLoading: function(){$('activityIndicator').show(), $('activityIndicator2').hide()},
                onLoaded: function(){$('activityIndicator').hide(), $('activityIndicator2').show()},
            });             
        }
        });
    });  
// ]]>  
</script>   

Я использовал этот код раньше, поэтому я "знаю", что он отправит мне данные на мой script.php страница. selectedSetupTop - это мой div, содержащий элементы.Не обращайте внимания на уведомление и ActivityIndicator .Моя script.php страница на данный момент выглядит так:

parse_str($_POST['data']);  
for ($i = 0; $i < count($selectedSetupTop); $i++) {  
    $test .= $selectedSetupTop[$i];
}

echo "<script>alert('$test');</script>";

Я не могу получить никакого вывода в сообщении о предупреждении, оно просто пустое.Цель script.php - обновить строку в базе данных, и она будет выглядеть примерно так:

$sql = mysql_query("UPDATE table SET row = '$arrayInStringFormat' WHERE id = '1'") or die(mysql_error());

, где $ arrayInStringFormat преобразование массива $ selectedSetupTop в формат (1, 2, 3, 4).Я думаю, я решу это с помощью Implode или что-то, но проблема в разборе массива $ selectedSetupTop .Я не проходил между страницами вообще, очень признателен за помощь!Скажите, если мне нужно объяснить дальше.

Заранее спасибо!

'' '' ''

РЕДАКТИРОВАТЬ 1

Если это поможет, я использовал этот код до того, как узнаю, что отправлю мне данные и воспользуюсь им.Обратите внимание, что я не хочу выполнять свою задачу так, как я делаю ниже:

$querySetup = $_GET["s"];
parse_str($_POST['data']);  
for ($i = 0; $i < count($selectedSetupTop); $i++) {  
    $sql = mysql_query("UPDATE " . $querySetup . " SET orderId = $i, hero_selected = 'n' WHERE imageId = $selectedSetupTop[$i]") or die(mysql_error());    
}

'' '' ''

РЕДАКТИРОВАТЬ 2

Так оно и есть, но у меня все еще есть проблема, я не могу напечатать это.Я хочу как-то взорвать массив.

1 Ответ

0 голосов
/ 19 августа 2011

Не уверен, как AJAX работает в Scriptalicious / Prototype, но вы, похоже, не получаете данные из вызова AJAX.В jQuery было бы что-то вроде этого, когда данные, которые вы получаете из скрипта, возвращаются в качестве аргумента функции.

onLoaded: function(msg){
    $('activityIndicator').hide(),
    $('activityIndicator2').show(),
    alert(msg)
}

Во-вторых, вы не можете отобразить массив PHP, вы должны его кодироватьв JSON:

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