2016-12-15 7 views
0

Ich habe diesen Code innerhalb eines Ereignisses js:Wie wird das Objekt über Ajax gesendet, nachdem das Objekt vollständig aktualisiert wurde?

var userData = tableWidget.grid('userData'); 
console.log(tableWidget.grid('userData')); 
$.ajax({ 
    "url": "../../server/query.aspx?tableEvent=reordercolumns&table=SubContractor", 
    "data": { dataColumnOrder: JSON.stringify(userData) }, 
    "dataType": "json", 
    "type": "GET", 
    "error": function() { 
     console.log("Something wrong with the columns' reorder saving process"); 
    } 
}); 

Sagen wir zwei Bedingungen hat Userdata. Vor und nach dem Ereignis ausgelöst wird:

userData before event: [a, b, c]

userData after event: [a, c, b]

In meinem Fall, wenn das Ereignis ausgelöst wird, enthält die console.log(tableWidget.grid('userData')); die userData after event wie es sein sollte. Aber wenn ich es über Ajax auf dem Server sende, enthält das Objekt stattdessen userData before event. Ich nehme an, dass Ajax das Objekt sendet, bevor das Objekt vollständig aktualisiert wird.

Meine Frage, gibt es eine Möglichkeit, die ajax auszuführen, nachdem var userData = tableWidget.grid('userData'); vollständig aktualisiert ist?

Aktualisiert: Es stellt sich heraus, dass das Problem von stringify Funktion aufgetreten scheint. Hier ist der Screenshot von meinem Objekt mit und ohne stringify:

Ohne Stringify console.log(userData);:

enter image description here

Mit Stringify console.log(JSON.stringify(userData));:

{ 
    "view": "SubContractorGridView", 
    "title": "SubContractor Grid View", 
    "settings": { 
     "colOrder": ["Id", "ExtKey", "InsertionDate", "DeletionDate", "Name", "Address", "ZipCode", "EmailAddress", "PhoneNumber", "UserName", "Password", "LastUpdate", "Price"], 
     "orderBy": "Name", 
     "orderDir": "asc" 
    }, 
    "columns": [{ 
      "dbField": "Id", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 89, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     }, { 
      "dbField": "ExtKey", 
      "show": false, 
      "widthMobile": 90, 
      "widthPhablet": 120, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 150, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 100 
     }, { 
      "dbField": "InsertionDate", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 100, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 100, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 110 
     }, { 
      "dbField": "DeletionDate", 
      "show": false, 
      "widthMobile": 90, 
      "widthPhablet": 90, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 100 
     }, { 
      "dbField": "Name", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 130, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     }, { 
      "dbField": "Address", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 90, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     }, { 
      "dbField": "ZipCode", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 90, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     }, { 
      "dbField": "EmailAddress", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 90, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     }, { 
      "dbField": "PhoneNumber", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 90, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     }, { 
      "dbField": "UserName", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 90, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     }, { 
      "dbField": "Password", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 90, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     }, { 
      "dbField": "LastUpdate", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 90, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     }, { 
      "dbField": "Price", 
      "show": true, 
      "widthMobile": 90, 
      "widthPhablet": 90, 
      "widthMiniTablet": 90, 
      "widthTablet": 90, 
      "widthSmallDesktop": 90, 
      "widthDesktop": 90, 
      "widthLargeDesktop": 90 
     } 
    ] 
} 

Wie Sie die Bestellung des Spalte sehen kann, ist irgendwie nicht geändert mit stringify.

+0

@RoryMcCrossan Yup, das ist richtig. ist es möglich, wenn der Ajax das Objekt sendet, bevor es aktualisiert wird? Ich meine, es führt den Ajax zuerst vor 'var userData = tableWidget.grid ('userData');' statt. –

Antwort

0

Ich glaube, Sie so versuchen, haben ......

var userData = tableWidget.grid('userData'); 
console.log(tableWidget.grid('userData')); 
$.ajax({ 
    url: "../../server/query.aspx?tableEvent=reordercolumns&table=SubContractor", 
    data: { 'dataColumnOrder': userData}, 
    dataType: "json", 
    type: "POST", 
    success:function(response){ 
     //write JS when ajax call success 
     console.log('success'); 
    }, 
    error: function() { 
     console.log("Something wrong with the columns' reorder saving process"); 
    } 
}); 
+0

Leider funktioniert auch ich nicht. –

+0

können Sie Ihren Fehler posten? –

+0

Es gibt auch keinen Fehler. Für den Ajax funktioniert es gut, nur für das Objekt wird es nicht auf dem Server aktualisiert, obwohl das Objekt bereits am Frontend aktualisiert wurde. –

Verwandte Themen