0

我正在使用 ExtJS 向服务器上的 PHP 页面发送 Ajax 请求,希望将参数作为 POST 变量而不是在查询字符串中发送。

我在查询字符串中包含了一个随机令牌,因为我们在我们的一个代理服务器上遇到了缓存问题。

Ext.Ajax.request({
url: 'ajax.php?action=test&randToken=' + generateRandomToken(),
scope: this,
method: 'POST',
success: ajaxSuccess,
failure: ajaxFailure,
params:
{
    param1: 'test',
    param2: 'data',
}});

上面的代码在我在本地(在 Vista 机器上)运行时有效,并使用 Fiddler 检查流量一切正常。

然而,当在我们的 Ubuntu 登台服务器(运行 Zend 服务器)上运行时,所有 ajax 请求也将 POST 数据放入查询字符串中。

我什至不知道从哪里开始寻找导致这种情况的原因。它是网络上的代理或其他东西,还是登台服务器上的设置?

4

1 回答 1

1

尝试将所有参数放入 POST。缓存不应该有任何问题,因为不应缓存 POST。

Ext.Ajax.request({
  url: 'ajax.php',
  scope: this,
  method: 'POST',
  success: ajaxSuccess,
  failure: ajaxFailure,
  params: {
    action: 'test',
    param1: 'test',
    param2: 'data'
  }
});

还可以尝试将查询字符串上的所有参数作为 GET 传递。如果您担心安全性,请注意 POST 和 GET 都通过 HTTP 传递,并且如果流量未使用 SSL 加密,则很容易被嗅探。

Ext.Ajax.request({
  url: 'ajax.php?' + 
    Ext.urlEncode({
      action: 'test',
      randToken: generateRandomToken(),
      param1: 'test',
      param2: 'data'
    }),
  scope: this,
  method: 'GET',
  success: ajaxSuccess,
  failure: ajaxFailure
});

最后,尝试从 params 哈希中删除尾随逗号。某些浏览器 (IE) 适合在 js 中留下尾随逗号时。

于 2009-11-27T11:26:08.450 回答