【问题标题】:Ajax Problem, variables are not getting sentAjax 问题,未发送变量
【发布时间】:2010-07-13 22:34:55
【问题描述】:

我正在做的这个 ajax 事情并没有按照我说的去做。

在客户端 JS 端,我提醒通过请求发送的所有内容,在 PHP 端,我打印出它接收到的所有内容。这两个变量列表并不相同。我不明白为什么。

这是我发送数据的方式(通过帖子):

xhr.onreadystatechange = response;
xhr.open("POST", self.url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-length", data.length);
xhr.setRequestHeader("Connection", "close");
xhr.send(data);
if(self.ALERT_SENT_DATA)
{
    alert("sending this to " + self.url + ":\n" + data);          
}

警报看起来像这样:(除类型、permissionid 和权限外,一切都为零)

sending this to workers/permission.php:
type=save&permissionid=2&permission=1&info=0&users=0&pages=0&menus=0
&toolmanager=0&contributors=0&currentissue=0&backup=0&features=0&issues=0&ast=0
&research=0&sports=0&milestones=0&sportslist=0&crusher=0&permission=0&info=0
&users=0&pages=0&menus=0&toolmanager=0&contributors=0&currentissue=0&backup=0
&features=0&issues=0&ast=0&research=0&sports=0&milestones=0&sportslist=0&crusher=0

在 PHP 方面,我总是可以获取变量类型和权限 ID。那些 2 总是有效,我不知道为什么。除了他们是第一个之外,这两个没有什么特别之处。然而,permissionid 之后的其他所有内容总是为零。无论 javascript 告诉我它发送了什么,PHP 上的一切都归零。

那么我该如何解决这个问题并找出我的问题所在呢?

【问题讨论】:

  • “数据”是如何设置的?我认为它没有被正确填充。
  • 是的。我将警报文本复制并粘贴到上面的框中。它只能读取数据的前 2 个值,而不能读取其他值。

标签: php ajax http httpwebrequest


【解决方案1】:
&permission=1&in.....her=0&permission=0

$_POST 中最后一位获胜,$_POST['permission'] 将为 0。

您可以通过在名称后添加 [] (&permission[]=1&permission[]=0) 来阻止它,这将在 $_POST['permission'] 中为您提供一个包含这 2 个值而不是字符串的数组。

如果无法控制命名,则必须自己手动解析输入(可以通过$input = file_get_contents('php://input');获取字符串

【讨论】:

  • 天哪,你是完全正确的。有这么多的价值,我什至没有注意到它把所有东西都发送了两次。这就是为什么一切都归零。现在我只是想弄清楚为什么它会发送两次谢谢。
猜你喜欢
  • 2015-09-30
  • 1970-01-01
  • 2021-11-03
  • 2021-03-20
  • 1970-01-01
  • 2012-10-26
  • 2017-11-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多