您好我有一个使用Facebook登录的代码:
<iframe allowtransparency="true" frameborder="no" height="600" scrolling="auto" src="http://www.facebook.com/plugins/registration.php?
client_id=183620578322567&
redirect_uri=http://example.com/store_user_data.php?&
fields=[
{"name":"name"},
{"name":"email"},
{"name":"password"},
{"name":"gender"},
{"name":"birthday"},
{"name":"captcha"}
]"
scrolling="auto"
frameborder="no"
style="border: none;"
width="500"
height="600">
</iframe>
正如你可以看到src属性中的json部分(字段)是错误的,引用丢失可能但我无法附加它,那么怎么会是正确的方法? thnks
答案 0 :(得分:4)
有些人对您的问题不以为然:
不使用 escape()
,自ECMAScript v3以来已被弃用。
使用 encodeURI()
代替。你也可以在回合中使用decodeURI()
。
请勿使用 encodeURIComponent()
来转义所有网址字符串,因为它会破坏您的网址,使用只是在您想要的时候发送网址作为参数。
'
代替json中的属性,使用 "
代替,因为上述函数不对{ {1}}字符。例如,您可以将您的json添加到网址,然后调用'
:
encodeURI
但
var url = 'http://myhost.com/?{"key", "value"}';
var myEncodedurl = encodeURI(url);
//result-->http://myhost.com/?%7B%22key%22,%20%22value%22%7D
然后使用encodeURIComponent(url);
//result-->http%3A%2F%2Fmyhost.com%2F%3F%7B%22key%22%2C%20%22value%22%7D
可以帮助您将encodeURIComponent
作为参数发送,如下所示:
url
顺便说一句,对于你的样本,你最好试试:
var myEncodedurl = 'http://myotherhost.com/?myurl=' +
encodeURIComponent('http://myhost.com/?{"key", "value"}');
//result-->http://myotherhost.com/?myurl=http%3A%2F%2Fmyhost.com%2F%3F%7B%22key%22%2C%20%22value%22%7D
答案 1 :(得分:2)
你应该正确地逃避整个字符串。使用JavaScript encodeURIComponent()
函数。
有关javascript url在此处转义的更多信息:URL encode sees “&” (ampersand) as “&” HTML entity
答案 2 :(得分:1)
在基本级别,您需要将src =“...”更改为src ='...',以便JSON中的双引号不用于关闭src属性。但是,你应该真正url编码网址中的所有特殊字符,并尽量避免在您的网址中回车。