javascript - jqGrid: construct postData array using a function's return value -
शुभ संध्या,
प्रारंभिक स्थिति अभी ग्रिड बनाते समय मैं स्थिर मानदंडों का उपयोग कर सर्वर से पैरामीटर को पास करता हूं: जटिल फ़िल्टर तंत्र (jqGrid नियंत्रण के बाहर) का उपयोग करते समय बनाए रखना बहुत मुश्किल है। वांछित दृष्टिकोण < / p> स्थिर दृष्टिकोण के बजाय, मैंने फ़ंक्शन कॉल का उपयोग करते हुए पोस्टडेटा मान सेट करने का प्रयास किया: पिछले विधि को संशोधित करना अगर मैं इसे फ़ंक्शन का उपयोग करने की कोशिश करता हूं, इसे कभी भी निष्पादित नहीं किया जाता है, इसलिए मैंने कोशिश- और-त्रुटि दृष्टिकोण जैसे: जो "डेटा: [ऑब्जेक्ट ऑब्जेक्ट]" को POST पैरामीटर के रूप में देगा। मेरा समाधान इस प्रश्न को नीचे लिखते हुए और चारों ओर खेलते समय मुझे अपनी समस्या का हल मिल गया :-) मैं भविष्य में पाठकों को इसी तरह के समाधान की खोज के लिए इसे पूरा करूंगा और उम्मीद है कि बेहतर तरीके से पढ़ा दृष्टिकोण। मैं ग्रिड डेटा जेनरेट करने के लिए एक पीएचपी-आधारित वेब सेवा का उपयोग कर रहा हूं, आखिर में मुझे क्या आवश्यक डाक डेटा दिया गया था: अंत तक और आपकी टिप्पणियों के लिए पढ़ने के लिए धन्यवाद (या तो क्योंकि समाधान गंदे है या यह मदद कर सकता है :-))।
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, .. ।});
/ ** * अतिरिक्त फ़िल्टर को वामब्राह से अतिरिक्त फ़िल्टर फ़िल्टर में निकालने * / स्व .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 (); }},
& 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
Post a Comment