regex解决方案需要调试jqueryajax调用的奇怪行为



我使用jquery ajax调用,将文本发送到服务器。

发送到服务器的文本(用户输入)可能包含问号。如果只有一个问号"?",那没问题,但如果同时有两个问号",那么ajax调用将停止正常工作。

文本示例:

这是一个文本示例吗??是的…

将生成:

这是文本示例吗jQuery17205792287601360849_1347644361296是的是…

我认为这个问题的根源是ajax调用的缓存:

缓存默认值:true,false用于dataType"script"one_answers"jsonp">

如果设置为false,它将强制请求的页面不由浏览器将cache设置为false还会附加一个查询字符串参数,"_=[TIMESTAMP]",添加到URL。

无论如何两个??jquery ajax调用与json并排发送文本字符串,使查询字符串参数显示在原始文本中,而不是两个??

现在最好的解决方案是什么?

有人能帮我用regex写一个str.replace函数,确保没有两个吗??并排在文本字符串中。。。?

Thx!

// text will be stored in the database via ajax call
$.ajax ({
type: "POST",
url: "ajax/ajax_special_functions.php",
data: data_string,
dataType: "json",
success: function(recive_obj) {
// Some more code...
}
});

文本包含在data_string中。。。如果有两个??在文本中,ajax调用仍然被触发,数据被传输到服务器,但回调函数永远不会被触发。。。

更新:我已经用regex str替换临时解决了这个问题-如果有人发现了解决这个问题的更干净的方法,请告诉我

我同意Kevin B的建议,但如果你真的想要的话,这里是正则表达式:

str = str.replace(/?+/g, '?');
if( /^(?=.*??).+/.test(textstring) ) {
// process the string or throw exception ...
}

最新更新