禁用JSON重新排序

时间:2012-03-01 16:54:01

标签: asp.net ajax json validationsummary

我正在创建一些要通过ajax调用验证的JSON数据。

这是我构建的JSON:

{"telephone1":"66",
 "telephone2":"66",
 "fax":"66",
 "mobilePhone":"66",
 "dateEffectiveChangementAdresseOuTel":"66",
 "adresse1IdentiqueAdresse2":true}

以下是获得者:

{ "adresse1IdentiqueAdresse2" : true,
  "dateEffectiveChangementAdresseOuTel" : "66",
  "fax" : "66",
  "mobilePhone" : "66",
  "telephone1" : "66",
  "telephone2" : "66"
}

正如您所注意到的,我的密钥按字母顺序重新排序,这是我不想要的。

这导致错误以第二顺序返回到页面,但我需要它们在第一顺序。我希望我的错误摘要(Html.ValidationSummary)能够跟踪页面上的错误(第一个错误=错误的第一个字段)。

有没有办法保留原来的订单?
或者某种方式绕过这个?

修改

        var coord = {
            telephone1: $("#Telephone1").val(),
            telephone2: $("#Telephone2").val(),
            fax: $("#Fax").val(),
            mobilePhone: $("#MobilePhone").val(),
            dateEffectiveChangementAdresseOuTel: $("#DateEffectiveChangementAdresseOuTel").val(),
            adresse1IdentiqueAdresse2: $("#Adresse1IdentiqueAdresse2").is(":checked")
        };

        $.ajax({
            type: 'POST',
            url: urlControleur + '_ActionTransmettre',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            data: JSON.stringify(coord),
            success: function (data, textStatus, jqXHR) {
                if (typeof (data) == "string") {
                    window.location = data
                    MsgErreur("");
                }
                else {
                    ListeMsgErreur(data);
                }
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                handleAjaxError(XMLHttpRequest, "M000017");
            }
        });

ajax调用返回(错误)

["The value {0} is not valid for Effective.",
"Le numéro saisi doit respecter le format 999 999-9999",
"Le numéro saisi doit respecter le format 999 999-9999",
"Le numéro saisi doit respecter le format 999 999-9999 ou, si vous devez saisir un numéro de poste, le format est 999 999-9999 x 9999999.",
"Le numéro saisi doit respecter le format 999 999-9999"]

按原样重新排序退货是不可能的。

1 个答案:

答案 0 :(得分:0)

我会检查返回json的代码。这就是它发生的地方。如果您无法更改呈现JSON的代码,则在传递数据之前重新构建数据

return {
   telephone1: theJson.telephone1,
   telephone2: theJson.telephone2,
   fax: theJson.fax,
   mobilePhone: theJson.mobilePhone,
   dateEffectiveChangementAdresseOuTel: theJson.dateEffectiveChangementAdresseOuTel,
   adresse1IdentiqueAdresse2: thsJson.adresse1IdentiqueAdresse2
};