0

以下の関数は、入力文字列 (#txtarea) に含まれる文字が少ない場合は機能しますが、長い文字列が含まれている場合は機能しません。どのように機能させるのですか?

以下は私のコードです:

 $('#insertcmt').click(function () {
        $.getJSON('http://localhost:55679/RESTService.svc/InsertComment?callback=?', { commenttext: $('#txtarea').val() }, function (data) {
        });
        loadcomments();

    });

サーバー側のロジック:

    [OperationContract]
    [WebGet(ResponseFormat = WebMessageFormat.Json)]
    public void InsertComment(string commenttext)
    {
        string sql = "INSERT statement";
        Database db = Utilities.GetDataBase();
        DbCommand cmd = db.GetSqlStringCommand(sql);
        db.ExecuteNonQuery(cmd);
    }

クロスドメインからアクセスしようとしているからでしょうか?

4

3 に答える 3

1

これは、RFC GET 要求の制限が原因である可能性があります。この質問を見てください。

サーバー側のロジックで挿入ステートメントを使用しているため、おそらく POST 要求を使用する必要があります。

 $('#insertcmt').click(function () {
    $.post('http://localhost:55679/RESTService.svc/InsertComment?callback=?', { commenttext: $('#txtarea').val() }, function (data) {
    });
    loadcomments();
});
于 2013-03-21T16:37:24.277 に答える
1

長い URL (2000 文字を超える) は、すべての Web ブラウザーで機能するとは限りません。

POST メソッドを使用します。

$('#insertcmt').click(function () {
  $.post('http://localhost:55679/RESTService.svc/InsertComment?callback=', 
    { commenttext: $('#txtarea').val() }, 
    function (data) {

    });

  loadcomments();
});

編集:

[WebGet] 属性を次のように変更する必要があります。

[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json)]
于 2013-03-21T16:38:11.707 に答える
0

GET ではなく POST を介してコンテンツを送信してみてください。理論上、普遍的な制限はありません。

于 2013-03-21T16:38:22.537 に答える