2010-11-30 8 views
0

У меня есть вопрос, связанный с прототипом AJAX/prototype. У меня есть вызов AJAX в настоящее время размещены в линию, в OnClick (я обещаю, я перееду его там :) события, глядя, как это:AJAX/prototype reset call

onclick="var pn = $('yards').value; $('inventory').update('Working...'); 
new Ajax.Updater('inventory','ajax.php?ac=checkInventory&productID='.$someproductid.'&yards='+pn,{method:'get', evalScripts: true, asynchronous: true, onComplete:function(tr){$('inventory').update(tr.responseText);}});" 

Файл называется ajax.php затем получает данные из $ _GET [] отображает небольшое поле ввода текста. При заполнении и нажатии кнопки отправки она вызывает функцию, которая считывает соответствующие данные из файла и выводит результат на экран. Цель всего этого кода - проверка инвентаря.

Итак, когда пользователь нажимает кнопку «получить инвентарь» с помощью кнопки onclick, как указано выше, все работает хорошо, пользователь заполняет метку, правильный результат всплывает, все счастливы. Но то, что делает его менее полезным, - это тот факт, что если пользователь хочет сделать еще одну проверку инвентаря, вся страница нуждается в обновлении. Если это не так, то при нажатии кнопки «получить инвентарь» пользователь снова получит тот же результат последней проверки, а не поле ввода текста.

Итак, мой вопрос заключается в том, как я могу сделать это после проверки инвентаря, и все это сбрасывается, так что в следующий раз, когда пользователь нажимает кнопку «получить инвентарь», ему будет предложено заполнить текстовое поле ввода и, следовательно, получить новый результат.

Прошу прощения, если я не сделал себя достаточно ясно. Я очень новичок в AJAX и прототипе, и это работа моего коллеги, которую мне нужно закончить ... Спасибо!

ответ

0

Ах я вижу,

Я не думаю, что Ajax.Updater работает так; взглянуть на документ: http://www.prototypejs.org/api/ajax/updater

new Ajax.Updater({ success: 'items', failure: 'notice' }, '/items', { 
    parameters: { text: $F('text') }, 
    insertion: Insertion.Bottom 
}); 

var pn = $('yards').value; 
    $('inventory').update('Working...'); 
    new Ajax.Updater('inventory','/ajax.php 
,{ 
    parameters: { ac: 'checkInventory' 
        , productId: /*put productId here*/ 
        , yards:/*put yards here too*/ 
       } 
, method:'get' 
, evalScripts: true 
, asynchronous: true 
, onSuccess: function(tr){ 
      //try an alert(tr.repsonseText); just to see what you get back 
      $('inventory').update(tr.responseText); 
      } 
}); 

вещи попробовать:

  • очистить поле ввода текста до вашего заселить это когда срабатывает событие OnComplete в вашем Ajax.Updater вызова.

  • Оповестить ответ, чтобы убедиться, что вы получаете другой ответ от сервера.

    * Используйте Fiddler, чтобы убедиться, что ваш переход в другом PRODUCTID

  • Изменение OnComplete в OnSuccess

Надеется, что это помогает

+0

Спасибо, это помогло в d процесс выталкивания. Наконец, я выложил его из onclick и установил всю функцию так, чтобы ее вызывали onclick вместе с отображением поля ввода текста. Таким образом, он перезапускается каждый раз, когда пользователь нажимает на эту кнопку. – Spaceploit 2010-12-14 04:53:41

0

Поскольку вы обещали переместить код из onclick укладчик:

var inv = $('inventory'); 

inv.update('Working...'); 

new Ajax.Request('ajax.php', { 
    method:'get', 
    parameters:{ 
     ac:'checkInventory', 
     yards:$('yards').value 
    }, 
    onSuccess: function(response) 
     { 
      inv.update(response.responseText); 
     } 
}); 
+0

Спасибо вам тоже;) – Spaceploit 2010-12-14 04:54:04