2012-07-22 17 views
0

我正在使用“livechatstarterkit”在我的mvc web应用程序中聊天功能。但是我的网络应用程序是从右到左的语言,用户的名字是波斯语。在ajax.post请求中发送unicoded字符串

这里的问题是,当波斯名登录为运营商用户自己的名字编码下面的脚本的原因:

<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(); 
      },); 

      $('#chatText').keyup(function (e) { 
       if (e.keyCode == 13) { 
        $.post('/chat/addmsg', { id: chatId, from: opname, msg: $('#chatText').val() }, function (data) { getMsgs(); }); 
        $('#chatText').val(''); 
       } 
      }); 
..... 

但正如我调试我的应用程序,我看到的消息来自运营商都不发送beign,实际上$.post('/chat/addmsg'....代码没有执行,请求也没有发送到正确的操作。

这里是在JScript opname一些的exaple: “&#1662;&#1588;&#1578;&#1740;&#1576;&#1575;&#1606;&#1740;

回答

1

替换:

var opname = '@ViewBag.opname'; 

有:

var opname = @Html.Raw(Json.Encode(ViewBag.opname)); 

而且测试是否输入在一个跨浏览器的方式被按下,你的代码应该是这样的:

$('#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(''); 
    } 
}); 
+0

感谢@Darin为您的解决方案 – 2012-07-22 13:21:36

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字符集传输到服务器的 ;您必须在服务器端正确解码此 。

+0

谢谢@Dorian Gr ay – 2012-07-22 13:21:14

相关问题