首先,抱歉我的英语不好....我已经创建了一个测试jquery ajax的示例页面。但我不能。我在页面上创建了一个db和2 txtbox以及一个html按钮。我希望按下按钮时文本框值保存到db。这是我的剧本:
$(function () {
$('#Button1').click(function () {
var udata = new Object();
udata.name = $('#Text1').val();
udata.fam = $('#Text2').val();
$.ajax({
type: "POST",
url: "default.aspx/InsertData",
data: udata,
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function () { alert("ok"); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
}
});
return false;
});
});
我背后的代码是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Diagnostics;
using System.Web.Services;
namespace ajax_example
{
public partial class _default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
[WebMethod]
protected static void InsertData(string name,string fam)
{
//some code
}
}
} 当我按下按钮时,我总是收到错误信息。请帮帮我。这有什么问题?!
答案 0 :(得分:1)
你可以尝试一下:
尝试将数据作为字符串传递,而不是对象。原因是如果您将对象指定为数据,那么jQuery使用查询字符串格式序列化数据,而服务器直接期望JSON格式。 Jquery的 -
$('#Button1').click(function () {
var name = "ssd"; //$('#Text1').val();
var fam = "dfss"; //$('#Text2').val();
$.ajax({
type: "POST",
url: "testjob.aspx/InsertData",
data: '{name: ' + "'" + name + "'" + ',fam: ' + "'" + fam + "'" + '}',
contentType: "application/json;charset=utf-8",
dataType: "json",
success: function (response) { alert("ok"); },
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
}
});
return false;
});
});
C#代码 - 制作webmethod public
[System.Web.Services.WebMethod]
public static void InsertData(string name, string fam)
{
//some code
}
答案 1 :(得分:0)
Web方法背后的代码必须是公开的,不受保护。