AJAX /原型重置调用

时间:2010-11-30 17:04:06

标签: ajax prototypejs call reset

我有一个与AJAX /原型相关的问题。我有一个内联的AJAX调用,在onclick(我保证我会把它移出那里:)事件,看起来像这样:

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和原型的新手,这是我需要完成的同事的工作......谢谢!

2 个答案:

答案 0 :(得分: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);
            }
});

要尝试的事情:

  • 在ajax.updater调用中触发onComplete事件时,在重新填充文本输入字段之前清除文本输入字段。

  • 提醒响应以确保从服务器获得不同的响应。

    *使用Fiddler确保传入不同的productId

  • 将onComplete更改为onSuccess

希望这有帮助

答案 1 :(得分: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);
        }
});