2016-12-15 5 views
0

私はこれを持って、イベント内のコードをJS:完全にオブジェクトを更新した後、ajax経由でオブジェクトを送信する方法は?

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"); 
    } 
}); 

はのはのuserDataは、二つの条件を持っているとしましょう。前と後のイベントが発生:

userData before event[a, b, c]

userData after event:イベントが発生したときにそれがあるべきよう[a, c, b]私の場合は

console.log(tableWidget.grid('userData'));userData after eventが含まれています。しかし、サーバーでajax経由で送信すると、オブジェクトにはuserData before eventが含まれています。オブジェクトが完全に更新される前にajaxがオブジェクトを送信すると仮定します。

私の質問は、var userData = tableWidget.grid('userData');が完全に更新された後にajaxを実行する方法はありますか?

stringify機能から問題が発生していることが判明しました。

文字列化console.log(userData);なし::

enter image description here

文字列化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 
     } 
    ] 
} 

何とかではありません。ここstringifyなしやと私のオブジェクトのスクリーンショットですstringifyで変更されました。

+0

@RoryMcCrossanうん。オブジェクトが更新される前にAJAXがそのオブジェクトを送信するのは可能でしょうか?つまり、最初に 'var userData = tableWidget.grid( 'userData');'の前にajaxを実行します。 –

答えて

0

私はあなたがこのように試してみて考えるそうです......

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

残念ながら、私はどちらも動作しません。 –

+0

あなたはエラーを投稿できますか? –

+0

エラーもありません。 ajaxの場合は、オブジェクトがすでにフロントエンドで更新されていても、オブジェクトに対してのみうまく動作しますが、サーバーでは更新されません。 –

関連する問題