jquery ajax代码不会触发后面的代码

时间:2013-09-28 12:27:16

标签: jquery asp.net ajax code-behind

首先,抱歉我的英语不好....我已经创建了一个测试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
        }
    }

} 当我按下按钮时,我总是收到错误信息。请帮帮我。这有什么问题?!

2 个答案:

答案 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方法背后的代码必须是公开的,不受保护。