Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 发布数据问题_Javascript_Html - Fatal编程技术网

Javascript 发布数据问题

Javascript 发布数据问题,javascript,html,Javascript,Html,我在提交帖子数据方面有问题。我有一个表单,其中有两个文本字段,当按下按钮提交数据时,它将通过一个自定义的from validation(JS)运行,然后我构建了一个查询字符串,如 title=test&content=some content 然后将其提交到服务器。我遇到的问题是,当我在其中一个输入中输入了“&”(例如)时,它会打断查询字符串。例如: title=test&content=some content &nbsp 我该怎么做 提前感谢,, 哈利 对字符串

我在提交帖子数据方面有问题。我有一个表单,其中有两个文本字段,当按下按钮提交数据时,它将通过一个自定义的from validation(JS)运行,然后我构建了一个查询字符串,如

title=test&content=some content
然后将其提交到服务器。我遇到的问题是,当我在其中一个输入中输入了“&”(例如)时,它会打断查询字符串。例如:

title=test&content=some content &nbsp 
我该怎么做

提前感谢,,
哈利

对字符串进行编码..当您想用特殊字符对查询字符串进行编码时,需要使用编码。符号是这样编码的

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 &nbsp ";
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 &nbsp ";
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中实现这一点,您可以参考以下链接:


您需要对查询进行编码以确保其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,并且