我正在使用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){}
}
请指导我宝贵的知识。
感谢。
答案 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);
}
}
});
谢谢大家:)