Javascript 当我在消息中放入:)时,消息传递系统jquery发送jQuery514109241_1210239812938
当我在文本区域中输入“:”)并通过ajax发送时,它会向数据库中输入一个值,如 “jQuery172039628539560362697_1345324072488”,我如何才能阻止这种情况?我应该首先用javascript解析文本,让它识别文本,而不是javascript编码的一部分吗 这就是我获取文本的方式Javascript 当我在消息中放入:)时,消息传递系统jquery发送jQuery514109241_1210239812938,javascript,jquery,Javascript,Jquery,当我在文本区域中输入“:”)并通过ajax发送时,它会向数据库中输入一个值,如 “jQuery172039628539560362697_1345324072488”,我如何才能阻止这种情况?我应该首先用javascript解析文本,让它识别文本,而不是javascript编码的一部分吗 这就是我获取文本的方式 var message = $("textarea.message_thread").val(); var dataString = 'id=' + id + '&message
var message = $("textarea.message_thread").val();
var dataString = 'id=' + id + '&message=' + message;
// make ajax call
发送
$.ajax(
{
type: "POST",
url: "/inbox/instsend",
data: dataString,
dataType: 'json',
success: function(results) {}
}
当您使用JSONP进行跨域AJAX调用时,jQuery会自动完成这项工作。它应该将此字符串作为
回调
参数的值发送。您需要清理输入并转义任何控制代码-例如:,),因为您正在此处执行POST。这会管用的
var dataString = '{'+'id:' + id + 'message:' + message +'}'
见问题下的评论;问题在于,在
dataString
中提交的内容实际上是一个url编码的字符串,而不是JSON izable或JSON literal变量
因此:
dataString = {id: id, message: message};
将在此处解决此问题。jQuery将获取该对象初始化的变量,并将其编码为JSON。一切都在beta.mysite.com中完成,没有跨域调用。我用关于如何获取文本的代码更新了我的问题。您如何发送AJAX请求?更新的问题,用代码。数据库SQL部分在哪里?这就是问题所在。您还发送了一个URL编码的字符串,而不是JSON。让jQuery对您的数据进行编码,给出
数据:myDataObj
。数据库部分很好,我检查了插入,问题发生在php中初始传递到变量时@JaredFarrish我在写一个url编码的字符串,好吧,所以我必须用myDataObj代替dataString,它将知道dataString=myDataObj?var dataString='{'+'id:'+id+'消息:'+message+'}'我在post中更新了答案,我们不发送带有符号的参数,但在我们发送的格式中,你也丢失了一个逗号。而且,真的,它不必是字符串:{id:id,message:message}
问题不在于有输入错误,而是您试图手动编写jsonvar-dataString={id:id,message:message}
相当于@AD7six,不那么黑,也更健壮,这是一种愚蠢的方式(仍然缺少一个逗号);对象初始值设定项会更简单,而且,让我们面对现实,会更有趣。