jquery serializeArray() results sometimes in empty string or empty array

I have an aspx.net page with a large form to add an order. This page contains a table with many order lines. Per order line, there are 20 form fields and 5 hidden fields.

There is a print button to print the order, but before that it has to save it first.

My problem is that when I use $("form").serializeArray(), the array is 1 to 1.000.000 times empty. It doesn't matter which browser I use.

This is making me crazy because lot's of users are calling me to fix this problem a.s.a.p. I don't know to where to start debugging.

  • Is serializeArray() the problemen?
  • Or maybe the postdata is to large or corrupt?
  • Maybe the WebMethod needs some extra attributes?

Here is my print button

<input type='button' title='Print' onclick='PrintOrder(true)' />
function PrintOrder(autosave) {
  if (autosave) {
    // save my order and call a callback function after it's completed
    AutoSaveForm(function () {
      PrintOrder(false);
    });
  } else {
    // show my pdf page
    window.open('printorder.pdf');
    return;
  }
}

var inAutoSaveForm = false;

// this function is needed to autosave my order
// fn is a callback function when it's successfull done.
function AutoSaveForm(fn) {
  if (!inAutoSaveForm) {
    // serializeArray to post my form by the ajax function
    var fields = $("form").serializeArray();

    // json format
    var myData = {
      'orderId': orderId,
      'fields': fields
    };

    myData = JSON.stringify(myData);

    ShowLoader();

    $.ajax({
      type: "POST",
      url: "/Order.aspx/AutoSave",
      contentType: "application/json; charset=utf-8",
      timeout: (1000 * 60 * 10),
      data: myData,
      dataType: "json",
      success: function () {
        setTimeout(function () {
          fn.call();
        }, 25);
      },
      error: function (x, t, m) {
        alert("Error, please try again later.\n\n" + t);
      },
      complete: function (msg) {
        // .. do nothing yet
      }
    });

    inAutoSaveForm = true;
  } else {
    fn.call();
  }
}

Here is my .NET code to save the order. Maybe I have to put some attributes to the WebMethod ?

[WebMethod]
public static string VerwerkForm(field[] fields) {
    // do the magic
    return "ok";
}

public class field {
    public string name { get; set; }
    public string value { get; set; }
}

Answers


Need Your Help

Any way to make DataContractJsonSerializer serialize Dictionaries properly?

.net wcf serialization

The DataContractJsonSerializer is not able to serialize Dictionaries properly.

Python slice by variable, last index

python slice

I have a function that is supposed to return elements from a list in the inclusive slice [a, b].

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.