2014-04-03 34 views
0

我想通过URL传递一个变量,它在Chrome和Firefox中做了一些非常奇怪的事情,它似乎在OS中也是这样做的。在网址奇怪的行为传递精明

的问题是,我想这种方式派几个变量的网址:

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

我已检测到的问题是所谓的“要价较高”的变量,如果我把它拿出来,然后一切似乎去梦幻般的,所以我想到的“阿利坎特德拉弗龙特拉,西班牙逗号“可能是所以我用过的问题:

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

但它一直在做与以前相同的奇怪的事情。任何想法?铬是否接受espace甜言蜜语?记得Firefox完全一样。顺便说一句,我在PHP中使用GET_。

+0

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

回答

0

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

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

嗨,感谢您的建议,但我很抱歉地说,它一直在做同样的事情 – juanma

0

用途:

encodeURIComponent(facebookName) 

encodeURIComponent

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

mysite.com?name=Bed&Breakfast 

将导致两个值“name=Bed”和“Breakfast=”这是不是你所期望的或想要的。编码会导致您的网址:

mysite.com?name=Bed%26Breakfast 

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

+0

嗨,感谢您的评论,但没有结果,任何其他想法?这是超级怪异的! – juanma

+0

您应该使用编码的键/值对。某些字符会导致无效的网址。 – mathius1

+0

感谢您的评论和它的版本。如果你看看IE中的结果(预期的),我做了一些修改,你看到什么错误了吗?或者你会改变什么?有一个可能是问题的“ - ”字符,但是如果你能看一看并告诉我什么是错的,那将是太棒了 – juanma