Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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 使用jquery发送post数据会产生406错误_Javascript_Php_Jquery - Fatal编程技术网

Javascript 使用jquery发送post数据会产生406错误

Javascript 使用jquery发送post数据会产生406错误,javascript,php,jquery,Javascript,Php,Jquery,我有一个带有tinymce textfield的表单,我使用jQuery的$.post命令将其内容发送到php脚本 这在大多数情况下都可以正常工作,除非我在文本字段中有一个如下所示的表单(它是PayPal捐赠表单): <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank"><input name="cmd" type="hidden" value="_s-xclick"

我有一个带有tinymce textfield的表单,我使用jQuery的$.post命令将其内容发送到php脚本

这在大多数情况下都可以正常工作,除非我在文本字段中有一个如下所示的表单(它是PayPal捐赠表单):

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank"><input name="cmd" type="hidden" value="_s-xclick" /> <input name="hosted_button_id" type="hidden" value="xxxxxx" /> <input alt="PayPal - The safer, easier way to pay online!" name="submit" src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif" type="image" /> <img src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" alt="" width="1" height="1" border="0" /></form>
<p><strong>Make a monthly donation</strong></p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank"><input name="cmd" type="hidden" value="_s-xclick" /> <input name="hosted_button_id" type="hidden" value="xxxx" />
<table>
<tbody>
<tr>
<td><input name="on0" type="hidden" value="Make a monthly donation" /></td>
</tr>
<tr>
<td><select name="os0">
<option value="$10 Month">$10 Month : $10.00 USD - monthly</option>
<option value="$25 Month">$25 Month : $25.00 USD - monthly</option>
<option value="$35 Month">$35 Month : $35.00 USD - monthly</option>
<option value="$50 Month">$50 Month : $50.00 USD - monthly</option>
<option value="$100 Month">$100 Month : $100.00 USD - monthly</option>
<option value="$125 Month">$125 Month : $125.00 USD - monthly</option>
<option value="$140 Month">$140 Month : $140.00 USD - monthly</option>
<option value="$200 Month">$200 Month : $200.00 USD - monthly</option>
<option value="$250 Month">$250 Month : $250.00 USD - monthly</option>
<option value="$300 Month">$300 Month : $300.00 USD - monthly</option>
</select></td>
</tr>

<tr>
<td><input maxlength="200" name="os1" type="text" /></td>
</tr>
</tbody>
</table>
<input name="currency_code" type="hidden" value="USD" /> <input alt="PayPal - The safer, easier way to pay online!" name="submit" src="https://www.paypalobjects.com/en_US/i/btn/btn_subscribeCC_LG.gif" type="image" /> <img src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" alt="" width="1" height="1" border="0" /></form>

同样,它可以很好地处理所有其他内容,只是上面的表单导致了错误…

事实证明,是服务器上的某些XSS机制导致了错误。我不知道表单的哪一部分导致了错误,但我怀疑是输入字段造成的

对于遇到相同问题的任何人,以下是解决方案:

在提交表单变量之前(例如,对于jQuery),对引起问题的表单变量使用某种base_64编码,然后在base_64中,在接收PHP脚本中对其进行解码

有一件事引起了一些麻烦,那就是我使用tinyMCE作为编辑器,它在base_64编码的字符串周围添加了一个..

。因此,第一次解码失败。因此,请确保在解码之前将编码字符串中的每个HTML元素都去掉


希望它能帮助任何人

请显示您的Javascript。在编辑中发布js尝试将其切换为
GET
请求。PHP脚本可能不支持
POST
。参考:嗯,它确实支持POST。我编写了PHP脚本,它成功地处理了其他内容。我确实查到了这张表格。当我从内容中删除表单时,脚本会愉快地接受POST数据并执行它应该执行的操作。
var serial = $('#frmPageEdit').serialize();

serial = serial + "&fid_navigation=" + id + "&action=save_page";

$.post('pages.html', serial, function(data){

            var result = _pagesSplitResponse(data);
            // Do some stuff with the response here...

            window.alert(_pagesTranslations['seite_gespeichert']);
}