html - 将json附加到链接的正确方法

时间:2013-12-26 22:14:01

标签: javascript html json

您好我有一个使用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

3 个答案:

答案 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 “&amp;” HTML entity

答案 2 :(得分:1)

在基本级别,您需要将src =“...”更改为src ='...',以便JSON中的双引号不用于关闭src属性。但是,你应该真正url编码网址中的所有特殊字符,并尽量避免在您的网址中回车。