在firefox 浏览器下用Prototype AJAX调用servlet的方法,有时可调用但有时不能调用!代码,输入数据和顺序都没有变,但执行10次大概随机有2次调用不了,像random()一样不稳定快疯啦,在IE好像没有这个问题,请大虾们帮忙分析一下可能出现的情况,分不够再加
JavaScript内:
function saveData(param)
{
var con = new Ajax.Request('/SubmitServlet', 
{
method: 'get',
encoding: 'UTF-8',
parameters : { action: 'saveDataServlet',pi_id: param},
onSuccess: function(transport)
{
var response = transport.responseText || "no response";
if(response.match("true"))
{
alert("success");
}
},
onFailure: function()
{}
});
}SubmitServlet内:
public void doGet(HttpServletRequest request, HttpServletResponse resp)throws IOException
{
static Logger logger = Logger.getLogger(SubmitServlet.class);
if(action.equals("saveDataServlet"))
  {logger.info("in saveDataServlet");}
}

解决方案 »

  1.   

    抓包查查吧.是FF问题,还是IE也有?
      

  2.   

    onFailure裡面也跳訊息吧。
    還有用Http Monitor看看每次的執行狀況吧。
      

  3.   

    补充一下:我是在javascript里面用另一个方法调用saveData()这个方法,然后再跳转到另一个jsp,若不跳转的话不会出现这种情况
    JavaScript内:
    function callSaveData(param)
    {
    saveData(param);
    window.location=chineseDomain+"Success.jsp?id="+param;//若不跳转的话100%可以调用
    }另外,我公司的电脑不能随便安装软件,抓包和用Http Monitor都要安装软件吧?有没有其他方法?
      

  4.   

    找出问题了,因为跳转页面时,AJAX调用的结果取决于网速,若网速太慢时未调用servlet的方法便跳转页面,会直接跳过不调用servlet,那应该如何判断AJAX是否已执行完相关操作,再进行下一步的javascript跳转页面?AJAX是否有判断相关状态的方法?Prototype呢?这个问题应该比较经常遇到的,大家讨论下有什么好方法吧,发言都有分~~
      

  5.   

    网速慢 AJAX执行失败 肯定是跑到onFailure 里吧
      

  6.   

    不是,是onsccess和onFailure都没有执行就已经跳转页面了有什么方法可以判断是否已经执行AJAX,并且未执行完成时等待,执行完后再进行下一步操作?
      

  7.   

    ajax默认一般都是异步的,改成同步的就OK了,
    同步:浏览器等待ajax执行,等ajax请求返回后才执行后面的代码;
    异步:不论ajax执行情况如何,都直接去执行后面的代码
      

  8.   

    在prototype可设置参数
    同步 - asynchronous: false
    异步 - asynchronous: true