【问题标题】:passing veriable in url weird behaviour在url奇怪的行为中传递变量
【发布时间】:2014-05-15 15:31:15
【问题描述】:

我正在尝试通过 URL 传递一个变量,它在 Chrome 和 Firefox 中做了一些非常奇怪的事情,似乎在操作系统中也是如此。

问题是我试图以这种方式在 URL 中发送一些变量:

document.location.href = 'http://www.ihaves.org/main.php?id='+facebookUser+'&first_name='+facebookName+'&last_name='+facebookName+'&locat='+locat_+'&locationlat='+facebookLat+'&locationlon='+facebookLon+'&mode=facebook';

奇怪的结果是这样的:

http://www.ihaves.org/Vejer%20de%20la%20Frontera,%20Spain

当预期的结果应该是这个:(取自 IE)

http://www.ihaveseen.org/main.php?id=1215834998&first_name=Juanma%20De%20Los%20Santos&last_name=Juanma%20De%20Los%20Santos&locat=Vejer%20de%20la%20Frontera%20Spain&locationlat=36.25&locationlon=-5.96667&mode=facebook

我检测到问题出在名为“locat”的变量上,如果我将其取出,那么一切似乎都很棒,所以我认为“Vejer de la Frontera, Spain”的逗号可能是问题所在,所以我用过:

var location_name = locationName.replace(/,/g, '');

但它一直在做和以前一样奇怪的事情。任何想法? chrome 是否接受 espace beetwen 单词?请记住,Firefox 的功能完全相同。顺便说一句,我在 PHP 中使用 GET_。

【问题讨论】:

  • 这就是你想要发生的事情。您应该使用编码的键/值对。某些字符会导致 URL 无效。

标签: javascript php variables url


【解决方案1】:

您应该在构造 URL 时在参数上使用encodeURI()

document.location.href = 'http://www.ihaves.org/main.php?id=' + encodeURIComponent(facebookUser);

【讨论】:

  • 您好,感谢您的建议,但很抱歉,它一直在做同样的事情
【解决方案2】:

用途:

encodeURIComponent(facebookName)

encodeURIComponent

您应该使用编码的键/值对。某些字符会导致 URL 无效。例如:

mysite.com?name=Bed&Breakfast 

将产生两个值“name=Bed”和“Breakfast=”,这不是您所期望或想要的。编码将产生您的 URL:

mysite.com?name=Bed%26Breakfast

它可能看起来很有趣,但该 URL 现在是有效的并且可以按预期工作。

【讨论】:

  • 您好,感谢您的评论,但没有结果,还有其他想法吗?这太奇怪了!
  • 您应该使用编码的键/值对。某些字符会导致 URL 无效。
  • 感谢您的评论和版本。如果您查看 IE 中的结果(预期的)我做了一些更改,您是否发现有什么问题?或者你会改变什么?有一个“-”字符可能是问题所在,但如果你能看看它并告诉我出了什么问题,那就太好了
  • 所以你是说 url 被截断了?并且在locat变量之后应该有一个下划线:“locat_”?
  • No mathius,url不会被截断,它似乎是stackoverflow发布规则的一部分,反正下划线也是变量名称的一部分,我的意思是,不是变量,但名称本身。我可以改变它看看会发生什么
猜你喜欢
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 2021-10-27
  • 2014-06-05
  • 2017-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多