嗨,我有一个使用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部分(字段)有问题,可能缺少引号,但我无法附加它,那么正确的方法是什么?谢谢
有些与您的问题有关,而与您的问题无关:
不要使用 escape()
,自ECMAScript v3起已弃用。
使用 encodeURI()
代替。您也可以decodeURI()
顺便使用。
不要使用 encodeURIComponent()
转义所有的url字符串,因为它会破坏您的URL,仅当您要发送url作为参数时才使用它。
'
在json中使用 属性,"
而是使用,因为提到的函数不会对'
字符进行编码。例如,您可以将json添加到url中,然后调用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
顺便说一句,对于您的示例,您最好尝试:
var url = 'http://www.facebook.com/plugins/registration.php?client_id=183620578322567&redirect_uri=' +
encodeURIComponent('http://example.com/store_user_data.php?&'
+ 'fields=['
+ '{"name":"name"},'
+ '{"name":"email"},'
+ '{"name":"password"},'
+ '{"name":"gender"},'
+ '{"name":"birthday"},'
+ '{"name":"captcha"}'
+ ']&"'
+ 'scrolling="auto"'//extract it from encodeURIComponent if they belong to your original url
+ 'frameborder="no"'//extract it from encodeURIComponent if they belong to your original url
+ 'style="border: none;"'//extract it from encodeURIComponent if they belong to your original url
+ 'width="500"'//extract it from encodeURIComponent if they belong to your original url
+ 'height="600"'/*extract it from encodeURIComponent if they belong to your original url*/);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句