我知道帖子失败的原因,但我不知道如何解决它,我找不到任何其他的引用。我正在使用我们对jEditable的引用来使这更简单,因为它没有jEditable插件。
那么我如何“逃避”关键字以使其正确发布?这是相关的代码:
测试
<script type="text/javascript">
$(function() {
$('#button').click(function() {
$.ajax({
type : 'POST',
url : 'ajax/post_cms.php',
dataType : 'html',
data : {
id : '1',
data : '<p>This is a test of the system that shows me an alert !</p>'
},
success : function(data) {
console.log(data);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
console.log('An Ajax error was thrown.');
console.log(XMLHttpRequest);
console.log(textStatus);
console.log(errorThrown);
}
});
});
});
</script>
<input type="button" name="button" value="button" id="button" />
当它出错时,抛出“error:”回调函数,并将“errorThrown”记录为undefined。我很肯定它是“警报”这个词,因为如果我在它出现的一个地方拼写“allert”,那么一切都很好。如果您取出HTML(所以它只是“数据:'这是对系统的测试,向我显示警报!'”)它的工作正常。
XMLHttpRequest =“XMLHttpRequest readyState = 4 status = 0 multipart = false” textStatus =“错误” errorThrown =“undefined”
GAH !! HELP !!
答案 0 :(得分:3)
<强>更新强>: 问题是防火墙将AJAX请求捕获为XSS攻击。如果您遇到类似于下面显示的问题,请务必检查您的环境。
症状:
我认为除了jQuery之外还有其他问题。 你的初始例子对我来说很好。
请参阅此处的工作示例:http://jsbin.com/ifami
注意:我必须将您的ajax网址更改为有效的网址,否则没有其他更改。
话虽如此,您可以尝试将您的值编码为URI组件:
<script type="text/javascript">
$(function() {
$('#button').click(function() {
$.ajax({
type : 'POST',
url : 'ajax/post_cms.php',
dataType : 'html',
data : {
id : '1',
data : encodeURIComponent('<p>This is a test of the system that shows me an alert !</p>')
},
success : function(data) {
console.log(data);
},
error : function(XMLHttpRequest, textStatus, errorThrown) {
console.log('An Ajax error was thrown.');
console.log(XMLHttpRequest);
console.log(textStatus);
console.log(errorThrown);
}
});
});
});
</script>
答案 1 :(得分:0)
如果它只是单词alert,你可以简单地将其更改为其他内容,例如#1234#,然后再将其解析。这很糟糕,但是如果你输入“警报”,那么一个崩溃的图书馆对我来说非常时髦。
你也可以进入lib代码并修复它......或者打开一张票并让他们修复它。听起来这是一个非常重要的问题!
答案 2 :(得分:0)
我想也许你的数据:参数需要另一组括号,如下:
data : ({ id : '1',
data : '<p>This is a test of the system that shows me an alert !</p>'
}),