我有一个与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和原型的新手,这是我需要完成的同事的工作......谢谢!
答案 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);
}
});