javascript - jqGrid: construct postData array using a function's return value -


शुभ संध्या,

प्रारंभिक स्थिति

अभी ग्रिड बनाते समय मैं स्थिर मानदंडों का उपयोग कर सर्वर से पैरामीटर को पास करता हूं:

  var $ grid = jQuery ("# ​​grid-table")। jqGrid ({url: '? c = grid.skill.GridSkill & amp; json & amp; o = get-data & amp; type = 1 ', postData: {' person_ref ': फ़ंक्शन () {वापसी $ (' # filter-person_ref ')। val ();},' country_ref ' : फ़ंक्शन () {वापसी $ ('# filter-country_ref')। val ();},}, mtype: 'POST', डेटाटाइप: "जेसन", colNames: self.columnTitles, colModel: self.columnNames, .. ।});   

जटिल फ़िल्टर तंत्र (jqGrid नियंत्रण के बाहर) का उपयोग करते समय बनाए रखना बहुत मुश्किल है।


वांछित दृष्टिकोण < / p>

स्थिर दृष्टिकोण के बजाय, मैंने फ़ंक्शन कॉल का उपयोग करते हुए पोस्टडेटा मान सेट करने का प्रयास किया:

  / ** * अतिरिक्त फ़िल्टर को वामब्राह से अतिरिक्त फ़िल्टर फ़िल्टर में निकालने * / स्व .preparePostData = function () {var arrPostData = {}; // चयन बॉक्स से मूल्य प्राप्त करें ... के लिए (var i में LeftBar.arrAdditionalFilter) {arrPostData [LeftBar.arrAdditionalFilter [i] .field] = $ ('#' + LeftBar.arrAdditionalFilter [i] .inputfield) .val ( ); } // ... और (वार्डबैर। आरसीएचएक्सबॉक्सफ़िल्टर में) के लिए चेकबॉक्स मान जोड़ें {arrPostData [LeftBar.arrCheckBoxFilter [i] .field] = $ ('#' + LeftBar.arrCheckBoxFilter [i] .inputfield) .is ( ': चेक')? 1: 0; } console.log (arrPostData); वापसी arrPostData; }; self.performLayout = function () {var $ grid = jQuery ("# ​​grid-table")। jqGrid ({url: '? c = grid.skill.GridSkill & amp; json & amp; ओ = प्राप्त-डेटा & amp; टाइप करें =' + PageControl । skillTypeRef, postData: function () {return self.preparePostData ();}, mtype: 'POST', डेटाटाइप: "जेसन", colNames: self.columnTitles, colModel: self.columnNames, ...});   

पिछले विधि को संशोधित करना

अगर मैं इसे फ़ंक्शन का उपयोग करने की कोशिश करता हूं, इसे कभी भी निष्पादित नहीं किया जाता है, इसलिए मैंने कोशिश- और-त्रुटि दृष्टिकोण जैसे:

  ... postData: {'डेटा': फ़ंक्शन () {return self.preparePostData (); }},   

जो "डेटा: [ऑब्जेक्ट ऑब्जेक्ट]" को POST पैरामीटर के रूप में देगा।


मेरा समाधान

इस प्रश्न को नीचे लिखते हुए और चारों ओर खेलते समय मुझे अपनी समस्या का हल मिल गया :-) मैं भविष्य में पाठकों को इसी तरह के समाधान की खोज के लिए इसे पूरा करूंगा और उम्मीद है कि बेहतर तरीके से पढ़ा दृष्टिकोण।

मैं ग्रिड डेटा जेनरेट करने के लिए एक पीएचपी-आधारित वेब सेवा का उपयोग कर रहा हूं, आखिर में मुझे क्या आवश्यक डाक डेटा दिया गया था:

  & lt ;? Php // नोटिस: डीबग कोड / मेरे परीक्षणों से डेमो स्टेटस शामिल हैं $ objData = json_decode ($ _ POST ['data']); // आपको एक प्रकार का ऑब्जेक्ट StdClass देगा ... अगर ($ objData) {// ... लेकिन '$ obj- & gt; {$ field}' // जैसे गतिशील प्रॉपर्टी एक्सेस का उपयोग करने के बजाय इसे एक मानक सरणी, '$ _POST' चर का उपयोग करके इसे उपयोग करें {$ arrPostFilter = get_object_vars ($ objData); प्रिंट 'हैलो देश-रेफरी:'। $ ArrPostFilter ['country_ref']; } पकड़ (अपवाद $ पूर्व) {प्रिंट 'Malformed डेटा पुनर्प्राप्त, त्रुटि थी:'। $ Ex- & gt; getMessage (); }}   

अंत तक और आपकी टिप्पणियों के लिए पढ़ने के लिए धन्यवाद (या तो क्योंकि समाधान गंदे है या यह मदद कर सकता है :-))।

Comments

Popular posts from this blog

Java - Error: no suitable method found for add(int, java.lang.String) -

c# - passing input text from view to contoller with FacebookContext using Facebook app -

Calling a C++ function from C# by passing a string with variable size to it -