我正在使用“livechatstarterkit”在我的mvc网络应用中进行聊天功能。但我的Web应用程序采用从右到左的语言,用户使用波斯语命名。
这里的问题是,当用户使用波斯语名称登录为运营商时,他的名字编码了以下脚本的原因:
<script type="text/javascript">
var intervalId;
var chatId = '@(Model)';
var lastMsgId = 0;
var opname = '@ViewBag.opname';
$(document).ready(function () {
getMsgs();
intervalId = window.setInterval(function () {
getMsgs();
}, 3210);
$('#chatText').keyup(function (e) {
if (e.keyCode == 13) {
$.post('/chat/addmsg', { id: chatId, from: opname, msg: $('#chatText').val() }, function (data) { getMsgs(); });
$('#chatText').val('');
}
});
.....
但是当我调试我的应用程序时,我看到来自运营商的消息未被发送,实际上$.post('/chat/addmsg'....
代码未执行且请求未被发送到正确的操作。
这是jscript中opname的一些例子:“پشتیبانی
”
答案 0 :(得分:1)
$.ajax({
url:"ax.php?action=post&save=1",
type: "POST",
data:
{ tabName: "basic",
rid: $("textarea#id").val(),
col:"id",
val:$(this).prev().val() },
success:function (result){ setSpan(result);},
dataType:"html", contentType: "text/plain; charset=UTF-8" } )
如何使用$.ajax
函数,以便设置contentType
属性。
将数据发送到服务器时,请使用此内容类型。默认是 “application / x-www-form-urlencoded”,对大多数情况来说都很好。如果 你明确地将内容类型传递给$ .ajax()然后它将永远是 发送到服务器(即使没有数据发送)。数据永远是 使用UTF-8字符集传输到服务器;你必须解码这个 适当地在服务器端。
答案 1 :(得分:1)
替换:
var opname = '@ViewBag.opname';
使用:
var opname = @Html.Raw(Json.Encode(ViewBag.opname));
另外,为了测试是否以跨浏览器方式按下 Enter ,您的代码应如下所示:
$('#chatText').keyup(function (e) {
var code = (e.keyCode ? e.keyCode : e.which);
if (code == 13) {
var url = '@Url.Action("addmsg", "chat")';
var msg = $(this).val();
$.post(url, { id: chatId, from: opname, msg: msg }, function (data) {
getMsgs();
});
$(this).val('');
}
});