0

我正在使用“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 的一些示例:“ &#1662;&#1588;&#1578;&#1740;&#1576;&#1575;&#1606;&#1740;

4

2 回答 2

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 字符集传输到服务器;您必须在服务器端对此进行适当解码。

于 2012-07-22T13:13:35.363 回答
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('');
    }
});
于 2012-07-22T13:17:11.480 回答