Javascript 发布数据问题
我在提交帖子数据方面有问题。我有一个表单,其中有两个文本字段,当按下按钮提交数据时,它将通过一个自定义的from validation(JS)运行,然后我构建了一个查询字符串,如Javascript 发布数据问题,javascript,html,Javascript,Html,我在提交帖子数据方面有问题。我有一个表单,其中有两个文本字段,当按下按钮提交数据时,它将通过一个自定义的from validation(JS)运行,然后我构建了一个查询字符串,如 title=test&content=some content 然后将其提交到服务器。我遇到的问题是,当我在其中一个输入中输入了“&”(例如)时,它会打断查询字符串。例如: title=test&content=some content   我该怎么做 提前感谢,, 哈利 对字符串
title=test&content=some content
然后将其提交到服务器。我遇到的问题是,当我在其中一个输入中输入了“&”(例如)时,它会打断查询字符串。例如:
title=test&content=some content  
我该怎么做
提前感谢,,
哈利 对字符串进行编码..当您想用特殊字符对查询字符串进行编码时,需要使用编码。符号是这样编码的
title=test&content=some content %26
基本上,查询字符串中的任何字符都可以替换为其ASCII十六进制等价物,前缀为%
Space = %20
A = %41
B = %42
C = %43
...
对字符串进行编码..如果要使用特殊字符对查询字符串进行编码,则需要使用编码。符号是这样编码的
title=test&content=some content %26
基本上,查询字符串中的任何字符都可以替换为其ASCII十六进制等价物,前缀为%
Space = %20
A = %41
B = %42
C = %43
...
运行每个键和值
var title = "test";
var content = "some content   ";
var data = encodeURIComponent('title') + /* You don't actually need to encode this as it is a string that only contains safe characters, but you would if you weren't sure about the data */
'=' + encodeURIComponent(title) +
'&' + encodeURIComponent('content') +
'=' + encodeURIComponent(content);
运行每个键和值
var title = "test";
var content = "some content   ";
var data = encodeURIComponent('title') + /* You don't actually need to encode this as it is a string that only contains safe characters, but you would if you weren't sure about the data */
'=' + encodeURIComponent(title) +
'&' + encodeURIComponent('content') +
'=' + encodeURIComponent(content);
这将解决您的问题:
encodeURIComponent(name)+'='+encodeURIComponent(value)+'&'+encodeURIComponent(name2)+'='+encodeURIComponent(value2)
在构建查询时,在连接它们之前,需要先转义每个值(如果希望安全起见,还需要转义名称)
- JavaScript全局函数执行转义
- 全局函数(DOM)在浏览器中为您执行此操作。尽管有人说,它对unicode字符的转义效果不佳。无论如何,如果您只关心“&”,那么这将解决您的问题
encodeURIComponent(name)+'='+encodeURIComponent(value)+'&'+encodeURIComponent(name2)+'='+encodeURIComponent(value2)
在构建查询时,在连接它们之前,需要先转义每个值(如果希望安全起见,还需要转义名称)
- JavaScript全局函数执行转义
- 全局函数(DOM)在浏览器中为您执行此操作。尽管有人说,它对unicode字符的转义效果不佳。无论如何,如果您只关心“&”,那么这将解决您的问题
您需要对查询进行编码以确保其URL安全。关于如何在JS中实现这一点,您可以参考以下链接: 你说过: …当按下一个按钮提交数据时,它将通过一个自定义的from validation(JS)运行,然后我构造一个查询字符串 在构建查询字符串的部分中,还应该按照David Dorward的建议,通过encodeURIComponent()运行每个输入的值 正如您所做的那样-请注意,您只将新值分配给已处理的查询字符串,而不是表单元素值,否则您的用户会认为他们的输入不知何故已损坏并可能会崩溃 [编辑] 我刚刚重读了你的问题,意识到了一件重要的事情:你正在编码一个;性格这可能是一个比其他海报读到的更复杂的问题。如果需要该字符和其他&code;键入要传输的字符,您需要意识到它们是代码。这些字符&,n,b,s,p和;本身与“”不同,后者是一个不会中断的空格字符 您必须添加另一个编码/解码步骤。您可以将此步骤放在数据发送(或“发布”)之前或之后 之前: () 其目的是将您的“特殊”字符(如“”)替换为“”,以便由encodeURIComponent(数据)对其进行正确编码 或之后: (使用标准PHP函数)
这假设您在帖子中用%26逃过了(&D)
如果用encodeURIComponent()以外的函数替换它,则必须找到一种不同的方法在PHP中对其进行解码。您说过:
…当按下一个按钮提交数据时,它将通过一个自定义的from validation(JS)运行,然后我构造一个查询字符串
在构建查询字符串的部分中,还应该按照David Dorward的建议,通过encodeURIComponent()运行每个输入的值
正如您所做的那样-请注意,您只将新值分配给已处理的查询字符串,而不是表单元素值,否则您的用户会认为他们的输入不知何故已损坏并可能会崩溃
[编辑]
我刚刚重读了你的问题,意识到了一件重要的事情:你正在编码一个;性格这可能是一个比其他海报读到的更复杂的问题。如果需要该字符和其他&code;键入要传输的字符,您需要意识到它们是代码。这些字符&,n,b,s,p和;本身与“”不同,后者是一个不会中断的空格字符
您必须添加另一个编码/解码步骤。您可以将此步骤放在数据发送(或“发布”)之前或之后
之前:
()
其目的是将您的“特殊”字符(如“”)替换为“”,以便由encodeURIComponent(数据)对其进行正确编码
或之后:
(使用标准PHP函数)
这假设您在帖子中用%26逃过了(&D)
如果将其替换为encodeURIComponent()以外的函数,则必须找到不同的方法在PHP中对其进行解码。为什么要用JS填充查询字符串?您是在发送ajax请求还是什么?如果没有,为什么不让浏览器完成它的工作呢?请注意,最终用户可能会禁用/欺骗JS,在这种情况下,您希望验证和表单也能正常工作。也许值得看看jQuery:)用更少的代码做更多的事情。为什么要用JS填充查询字符串?您是在发送ajax请求还是什么?如果没有,为什么不让浏览器完成它的工作呢?请注意,最终用户可以禁用/欺骗JS,并且