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

尝试通过 POST 而不是 GET 发送内容,理论上没有通用限制。

于 2013-03-21T16:38:22.537 回答