0

mvcWebアプリのチャット機能に「livechatstarterkit」を使用しています。しかし、私の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 に答える