2010-04-10 45 views
1

我在窗体上有几个文本框,当用户提交时,我想捕获数据并将其插入到数据库中。使用jQuery/Ajax/JSON从FORM捕获数据

这里是我的代码看起来像

// Called just before the form is submitted. 
beforeSubmit: function(data) 
{ 
    var item = $("[id$='item']"); 
    var category = $("[id$='category']"); 
    var record = $("[id$='record']"); 

    var json = "{'ItemName':'" + escape(item.val()) + 
     "','CategoryID':'" + category.val() + "','RecordID':'" + record.val() + "'}"; 

    //This page is where data is to be retrieved and processed. 
    var ajaxPage = "DataProcessor.aspx?Save=1"; 

    var options = 
    { 
     type: "POST", 
     url: ajaxPage, 
     data: json, 
     contentType: "application/json;charset=utf-8", 
     dataType: "json", 
     async: false, 
     success: function(response) 
     { 
      alert("success: " + response); 
     }, 
     error: function(msg) 
     { 
      alert("failed: " + msg); 
     } 
    }; 

    //Execute the Ajax call and get a response. 
    var returnText = $.ajax(options).responseText; 
    if (returnText == 1) { 
     record.html(returnText); 
     $("#divMsg").html("<font color=blue>Record saved successfully.</font>"); 
    } 
    else 
    { 
     record.html(returnText); 
     $("#divMsg").html("<font color=red>Record not saved successfully.</font>"); 
    } 

    // $("#data").html("<font color=blue>Data sent to the server :</font> <br />" + $.param(data)); 
}, 

这里是数据发送到服务器:如果我取消注释以下行。

// $("#data").html("<font color=blue>Data sent to the server :</font> <br />" + $.param(data)); 
__VIEWSTATE=%2FwEPDwULLTE4ODM1ODM4NDFkZOFEQfA7cHuTisEwOQmIaj1nYR23&__EVENTVALIDATION=%2FwEWDwLuksaHBgLniKOABAKV8o75BgLlosbxAgKUjpHvCALf9YLVCgLCtfnhAQKyqcC9BQL357nNAQLW9%2FeuDQKvpuq2CALyveCRDwKgoPWXDAKhwImNCwKiwImN &day_fi=12&month_fi=12&year_fi=1234&lastFour_fi=777&countryPrefix_fi=1&areaCode_fi=555-555&phoneNumber_fi=5555&email_fi=nisardotnet%40gmail.com&username=nisarkhan&password=123456&retypePassword=123456

回答

1

Nisardotnet - 你在C#中工作吗?你在这里过得太多了。你可以使用网页方法将你的代码减半 - 同样,摆脱视图状态 - 你不需要它(从页面中删除表单)

如果你在C#中工作,让我知道,我可以帮助。 罗布

**** ****追加

好了 - 我建了一个简单的“抢输入值和更新DB”的事情 - 在我的网站here它。

给我留言,如果你有任何问题。 罗布

**** ****追加

好了,在你的类文件,你可以有

internal static void updateDB(String values) 
{ 
    // do something with 'values' 
} 

然后在你的aspx页面你可以调用它像这样...

[WebMethod] 
public static void updateDB(String values) 
{ 
    yourClass.updateDB(values); 
} 

这应该工作。

+0

Hi Rob, 是的我正在C#VS 2008 asp.net上工作 - 谢谢。 – 2010-04-13 17:26:23

+0

Rob,我已经测试过你的解决方案,但是当我尝试将webmethod放入类中时,它就会失败。你有没有尝试把类中的updateDb,看看? 这里是错误信息: HTTP错误403 - 禁止。 var url =“App_Code/WebMethods.cs/updateDB”; 或 var url =“WebMethods.cs/updateDB”; – 2010-04-16 00:27:54

+0

Abu - 你不能直接从类文件调用web方法。从字面上看,这是禁止的!你只能从jQuery.ajax调用一个aspx页面(或asmx,但它很麻烦)。所以,你可以把这个方法放在一个类文件中,但是你需要在你的aspx页面上使用另一个web方法(或者它的代码),你可以从jQuery.ajax调用它。那有意义吗? - 我已经在 – LiverpoolsNumber9 2010-04-16 02:44:05

0

你应该能够把它所有出的Request.Form的。

+0

杰里米,你能告诉我怎么样? - 谢谢。 – 2010-04-10 03:23:44