繁体   English   中英

通过POST进行Ajax调用不起作用

[英]Ajax call via POST not working

我对AJAX请求有一个小问题。

我们有一个小PHP,JavaScript应用程序(网站)。 该应用程序可以在所有桌面浏览器以及旧的MDE(某些Windows CE6 MDE)上正常运行。 现在,在我们的新Motorola MC9200(以前是Windows Embedded Compact 7,是CE7)上,它不再起作用。

问题是一些小的JavaScript函数。 它禁用按钮/输入字段,启动Ajax.Request(原型1.72,但我也测试了jQuery 1.11.1),在数据库上执行了某些操作,当一切正常后,将通过window.location刷新站点。 此功能并非始终在新设备上起作用。 有时会,有时则不会。

简化代码:

function loadSite(siteName) {
  disableForm();
  var parameters = {
    /* SOME PARAMETERS */
  };

  new Ajax.Request('ajax/ajax_db_execute.php', {
     method: 'post',
     parameters: parameters,
     onSuccess: callbackFunc
  });
}

function callbackFunc(transport) {
  response = transport.responseText.evalJSON(true);
  if(response.retcode === 0) {
    window.location = "start.php?id=<?php echo $id; ?>";
  } else {
    show_error_box(response.errortext);
      enableForm();
  }
}

我试图在callbackFunc中输出响应,但是甚至没有调用该函数。 我接下来要尝试的是在loadSite函数的末尾添加一些警报,每次都会触发它。 我已经检查了参数,它们看起来也不错。

之后,我将一些简单的fwrite放在php文件中。 似乎有时甚至没有调用该文件。 那么问题是为什么呢?

通过将方法更改为“获取”,我无法重现问题,并且一切正常。 问题是我不想使用get +某些参数可能太长了,无法处理。

该示例中的参数只是一些简单的整数和字符串。 有谁知道可能导致问题的原因和解决方法?

您的发布请求响应似乎未同步。 所以请像这样在您的帖子回调中使用setTimeout函数

setTimeout(function(transport) { response = transport.responseText.evalJSON(true); if(response.retcode === 0) { window.location = "start.php?id=<?php echo $id; ?>"; } else { show_error_box(response.errortext); enableForm(); } }, 3000);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM