1

ASP.NET MVC アプリケーションの上にいくつかの EXTJS コードを継承しており、Ext.msg.prompt ボックスの前に「:」文字を含む文字列がある場合に発生するエラーを追跡しようとしています。エラーが発生すると思われる方法は次のとおりです。

  var casePrompt = function() {
    Ext.Msg.prompt("Numb", "", function(btn, text) {
        if (btn == "ok") {
            numbID = text.trim().toUpperCase();
            Ext.Ajax.request({
                url: "/location/method/" + numbID,
                method: "GET",
                callback: function(options, success, response) {
                    var reply = Ext.decode(response.responseText);
                    if (success) {
                        listOpen(reply.Data);
                    } else {
                        errorMsg(reply, function(button, text) { numbID = ""; });
                    }
                }
            });
        }
    });
};

数値が期待どおりにボックスに入れば、すべて正常に動作します。ただし、誰かが同じ番号または有効な番号の前に「:」を付けて入力すると、メソッドはコントローラーに戻る前にエラーになります。このエラーは、「Microsoft JScript コンパイル エラー: 構文エラー」とだけ表示され、ext-all-debug.js 内の次のコードが強調表示されます。

doDecode = function(json){
     return eval("(" + json + ;)');
}

誰もこれを前に見て、このエラーをキャッチする方法を知っていますか? 私はVS2010でこれをステップスルーしようとしましたが、まだ運がありません。

ありがとうございました!

4

1 に答える 1

0

有効な文字に一致しないものをすべてキャッチするために、テキスト文字列に正規表現を使用して検証を行うだけになりました。これにより、コロンやその他の文字が処理されたため、クライアント側の検証が必要であるという mistaecko の意見は正しかった。これで問題は解決したようです。コメントしてくださってありがとうございます!

于 2012-08-28T21:45:10.097 に答える