【问题标题】:Get string not sending variables correctly获取字符串未正确发送变量
【发布时间】:2013-02-05 16:30:09
【问题描述】:

至少我认为这是我的问题^基本上,它真的很简单,我将一个 ajax 制作的 get 字符串发送到一个 php 脚本,但是该字符串显然没有被正确分解。

Ajax sn-p:

xmlhttp.open("GET","ajaxQuery.php?name="+str+"&identifier="+id,true);
xmlhttp.send();

PHP

//variables sent from Ajax
$owner = $_GET['name'];
$identifier = $_GET['identifier'];

由于某种原因,$_GET['identifier'] 为空。 print_r($_GET) 显示给我:

Array
(
[name] => John Doeidentifier=1
)

名称是John Doeid 是 1,但由于某种原因它们没有拆分,据我所知,我的 Get 字符串编译正确有什么想法吗?

【问题讨论】:

  • 确保对要插入 ajax 请求的变量进行 uri 编码。
  • 使用 &只有我能预测到
  • 看起来您的实际代码中有 "ajaxQuery.php?name="+str+"identifier="+id 而不是 "ajaxQuery.php?name="+str+"&identifier="+id
  • @FAngel & 在那里...
  • 一切都回到$_REQUEST['name'] 下吗?你看到价值中的 & 了吗?否则无法理解'不分手'。

标签: php ajax get


【解决方案1】:

由于其中一个字符串中的空格,URL 可能已损坏。要解决此问题,您需要对每个变量进行编码,以便正确处理空格和其他特殊字符

xmlhttp.open("GET","ajaxQuery.php?name="+encodeURIComponent(str)+"&identifier="+encodeURIComponent(id),true);

【讨论】:

  • 我尝试实施您的建议,但没有任何改变。 encodeURIComponent 到底是做什么的,对不起 ajax 的新奇
  • 它将字符串编码为与 uri 兼容的格式。例如,空格替换为 %20。其他可能破坏 uri 解析的字符也被替换为类似的代码。
  • 谢谢解释,基本上相当于htmlentities?此外,这确实解决了我的问题,由于某种原因,它需要我刷新我的索引页面,实际上不应该需要,因为所有东西都位于外部......但是谢谢
  • 类似,但使用的编码不同。实体会将与号 (&) 编码为 &而 url 编码会将其转换为 %26。 PHP 有urlencodeurldecode
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-02
  • 2018-09-30
  • 2015-04-18
  • 2018-12-25
相关资源
最近更新 更多