[英]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.