当输入字符串(#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);
}
是因为我试图从跨域访问吗?
答案 0 :(得分:1)
这可能是由RFC GET请求的限制引起的。看看this question。
由于您在服务器端逻辑中使用了insert语句,因此您应该使用POST请求。
$('#insertcmt').click(function () {
$.post('http://localhost:55679/RESTService.svc/InsertComment?callback=?', { commenttext: $('#txtarea').val() }, function (data) {
});
loadcomments();
});
答案 1 :(得分:1)
长网址(超过2000个字符)可能无法在所有网络浏览器中使用。
使用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)]
答案 2 :(得分:0)
尝试通过POST发送内容,而不是GET,理论上没有普遍的限制。