【问题标题】:Saving data with ajax and json使用 ajax 和 json 保存数据
【发布时间】:2015-05-05 13:59:19
【问题描述】:

我正在做一个我没有开始的项目,我有一个输入功能是将数据保存到数据库中。输入留给此函数 (SaveData),但它不起作用。我真的不太了解ajax和json,所以有人可以看看这有什么问题吗?

函数是这样的:

 function SaveData() {
     var columns = [];

     $("#FeaturedContent_m_visible_cols li").each(function (i, elem) {
        columns[i] = $(elem).attr("colid");
     });

     $.ajax({
        async: false,
        type: "POST",
        url: "ConfigList.aspx/SaveConfiguration",
        data: "{ 'jsonData': [" + JSON.stringify(columns) + "] }",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
        },
        error: function (response) {
           alert(jQuery.parseJSON(response.responseText).Message);
        }
     });

SaveConfiguration 方法是这样的:

[System.Web.Services.WebMethod]
 [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
  public static string SaveConfiguration(dynamic jsonData)
{
 Object[] column = (Object[])jsonData[0];
  string   col_id;
  int      i;

  for (i=0; i<column.Length; i++) {
     col_id = (string)column[i];
  }

  SaveTableConfiguration();

  return "";
  }

还有 SaveTableConfiguration:

 public void SaveTableConfiguration(int list_id, List<TableHeader> lista)
  {
    int           i;
    TableHeader   row;
    SetListConfig set_lconfig = new SetListConfig(m_connection, m_language);

set_lconfig.LoadRecordset("LC_LISTID=" + list_id.ToString(),    m_transaction);
     while (!set_lconfig.IsEOF()) {
        set_lconfig.m_LC_EDITABLE = 0;
        set_lconfig.Update();

        set_lconfig.MoveNext();
     }

     for (i=0; i<lista.Count;i++) {
        row=lista[i];

set_lconfig.LoadRecordset("LC_LISTID=" + list_id.ToString() + " AND                LC_COLTBL='" + row.header_col + "'", m_transaction);
        if (set_lconfig.IsEOF()) {
           set_lconfig.m_LC_EDITABLE = 1;
           set_lconfig.m_LC_ORDER = i+1;
           set_lconfig.Update();
        }
     }
  }

再次感谢! =)

【问题讨论】:

  • 你是用c#接收数据吗?
  • 使用调试器,看看你的客户端请求是否到达服务器端SaveConfigurationConfigList.aspx中的web方法
  • 展示SaveConfiguration方法实现+
  • data: "{ 'jsonData': [" + JSON.stringify(columns) + "] }", JSON.stringify a Array into a Array 可能是错误的。它会给你留下那个 json:{ jsonData: [ [ ... ] ] }
  • @Unike 你能定义“它不工作”吗?您没有在成功处理程序中执行任何操作,因此即使成功调用/返回也不会发生任何事情。

标签: javascript c# jquery ajax json


【解决方案1】:

据我所知,假设 URL 有效并且您的 html 的其余部分有效,那么您的数据属性似乎不正确。你有:

data: "{ 'jsonData': [" + JSON.stringify(columns) + "] }",

根据我的经验,你应该在整个片段上使用 stringify:

data: JSON.stringify({jsonData: columns}),

【讨论】:

    【解决方案2】:
    function SaveData() {
     var columns = [];
    
     $("#FeaturedContent_m_visible_cols li").each(function (i, elem) {
        columns[i] = $(elem).attr("colid");
     });
    var datum={'jsonData':columns};
    
     $.ajax({
        async: false,
        type: "POST",
        url: "ConfigList.aspx/SaveConfiguration",
        data: JSON.stringify(datum),
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
        },
        error: function (response) {
           alert(jQuery.parseJSON(response.responseText).Message);
        }
     });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-11
      • 2015-10-04
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多