使用jquery.ajax传递大数据

时间:2012-07-23 11:36:21

标签: asp.net jquery

我正在使用asp.net和jQuery 1.6

在我的函数中,我需要将html标记作为数据参数传递给用C#编写的服务器端方法。在我的数据库中,该列具有Blob数据类型 我能够成功提交数据到528b,但如果我提交大数据......我无法在服务器端发送。

当我传递小数据时,它会工作并插入一行。但是如果我在17Kb左右传递数据,那么这不会进入服务器端,但是在jquery中提示我一个未定义的错误。

以下是Ajax代码:

$.ajax({
    type: "POST",
    url: "Post.aspx/savePost",
    data: "{Title:'" + Title + "',Html:'" + Html + "'}",
    contentType: "application/json",
    dataType: "json",
    success: function (data) {
        if (data == undefined) {
            alert("Error : 219");
        }
        else {
            alert(data.d);
        }
    },
    error: function (data) {
        if (data == undefined) {
            alert("Error : 465");
        }
        else {
            alert("Error : 468 " + data.d);
        }
    }
});

以下是C#代码

[System.Web.Services.WebMethod]
public static string savePost(string Title,string Html)
{
    string retMsg = "Not Saved";
    Post bp = new Post();
    int count = 0;
    count = bp.mySavePost(Title,Html);
    if (count > 0)
    {
        retMsg = "Post Save Successfully.";
    }
    return retMsg;
}

protected int mySavePost(string Title, string Html)
{
    int count=0;
    try
    {
        string rawQuery = "INSERT INTO temp_posts (Title,HTML)"
                        + " VALUES(?Title,?HTML)";
        cmd = new MySqlCommand();
        cmd.CommandText = rawQuery;
        cmd.CommandType = System.Data.CommandType.Text;
        cmd.Parameters.Add("?Title", MySqlDbType.VarChar).Value = Title;
        cmd.Parameters.Add("?Html", MySqlDbType.Blob).Value = Html;
        count = c.insertData(cmd);
     }
     catch(Exception ex){}
 }

请指导我宝贵的知识。
感谢。

1 个答案:

答案 0 :(得分:1)

非常感谢所有为这个主题付出最大努力的人。

最后,在我的一位大四的帮助下,我找到了我的代码中缺少的地方。

当我将html标记作为数据参数传递给我用jQuery.ajax();用C#编写的服务器端方法时,我需要对数据进行编码。

因为我在javascript中使用escape()函数对其进行编码工作。数据将提交给数据库。

var encodedHTML = escape(Html);         //here encoding Html.
$.ajax({  
    type: "POST",   
    url: "Post.aspx/savePost",  
    data: "{Title:'" + Title + "',Html:'" + encodedHTML + "'}",  
    contentType: "application/json",  
    dataType: "json",  
    success: function (data) {  
        if (data == undefined) {  
            alert("Error : 219");  
        }  
        else {  
            alert(data.d);  
        }  
    },  
    error: function (data) {  
        if (data == undefined) {  
            alert("Error : 465");  
        }  
        else {  
            alert("Error : 468 " + data.d);  
        }  
    }  
});  

谢谢大家:)