2009-06-08 9 views
15

मैं jQuery पर बहुत अच्छा नहीं हूं लेकिन मेरी साइट के लिए jEditable प्लगइन का उपयोग करने का निर्णय लिया क्योंकि मैंने सोचा कि यह अच्छा दिखता है और उद्देश्य हल करता है। हालांकि, मैं अब एक उलझन में हूँ।jquery (jeditable) गड़बड़ से कैसे बाहर निकलना है

मैंने डेटा को संपादित करने के लिए इस प्लगइन का उपयोग किया और संपादित डेटा डीबी को भेजा गया है और कुछ फ़ील्ड इसके द्वारा अपडेट किए गए हैं। संग्रहीत प्रक्रिया जो इन क्षेत्रों को अद्यतन करती है, कुछ डेटा वापस लौट रही है। मैं यह डेटा वापस लौटना चाहता हूं। मैं पहले लौटाए गए डेटा को पहले 'अलर्ट' कथन में देखना चाहता हूं, फिर मैं इसे वहां से ले जा सकता हूं।

इस प्लगइन की कॉलबैक विधि में मूल्य और सेटिंग्स हैं।

क्या इस प्लगइन का उपयोग करते समय सर्वर से कुछ डेटा वापस पाने का कोई तरीका है?

उत्तर

3

क्या यूआरएल आप अपडेट को सबमिट कर रहे हैं (जो PHP, जेएसपी, जावा सर्वलेट इत्यादि जैसे कुछ प्रकार के डायनामिक पेज होंगे) संग्रहीत प्रक्रिया से रिटर्न वैल्यू को प्रतिक्रिया में जोड़ते हैं? यदि ऐसा है, तो मैं उम्मीद करता हूं कि उस डेटा को "मान" फ़ील्ड में दिखाया जाए जो वे कॉलबैक पर जाते हैं।

जब मैं जेडटेबल ऑनलाइन डेमो का उपयोग करता हूं, तो प्रतिक्रिया में केवल अद्यतन टेक्स्ट शामिल होता है, लेकिन यह उस विशेष PHP कोड का एक फ़ंक्शन है जिसका उपयोग वे कर रहे हैं और जेडटेबल जावास्क्रिप्ट कोड के साथ कुछ भी नहीं है।

0

लगता है कि जेडडेबल jquery AJAX विधियों के आसपास एक रैपर है। jquery की मूल AJAX विधि का उपयोग करने वाले कॉल के साथ अपने सभी जेडडिटेबल कॉल को प्रतिस्थापित करना बहुत कठिन नहीं होना चाहिए।

आप 'सफलता' के साथ 'कॉलबैक' नामक जेडटेबल के कॉलबैक को प्रतिस्थापित कर सकते हैं जो jquery के AJAX फ़ंक्शन में कॉलबैक का नाम है।

14

मैंने अपनी साइट के लिए बिल्कुल यह किया है। इससे आप कार्य शुरू कर पाएंगे।

$("#editable_text").editable(submitEdit, { 
      indicator : "Saving...", 
      tooltip : "Click to edit...", 
      name : "Editable.FieldName", 
      id : "elementid", 
      type : "text", 
}); 
function submitEdit(value, settings) 
{ 
    var edits = new Object(); 
    var origvalue = this.revert; 
    var textbox = this; 
    var result = value; 
    edits[settings.name] = [value]; 
    var returned = $.ajax({ 
      url: "http://URLTOPOSTTO", 
      type: "POST", 
      data : edits, 
      dataType : "json", 
      complete : function (xhr, textStatus) 
      { 
       var response = $.secureEvalJSON(xhr.responseText); 
       if (response.Message != "") 
       { 
        alert(Message); 
       } 
      } 
      }); 
    return(result); 
} 

आप प्रपत्र

{ "message" = "foo"}

की एक Json प्रतिक्रिया वापस करने की जरूरत है और वह सतर्क में प्रदर्शित किया जाएगा।

+0

+1 क्या सबमिट बटन को स्वयं निर्मित बटन पर बाध्य करना संभव है? – Roylee

+0

माइनर नाइटपिक, लेकिन यह जेसन प्रतिक्रिया * काफी * जेसन नहीं है ... 's/= /: /' :-) – mgilson

9

मैं क्लासिक एएसपी में काम कर रहा है भी इस समस्या को हल करने की कोशिश कर, और दूसरों को लगा जैसे मुझे यहाँ भी हो सकता है। यहाँ कैसे मैं क्लासिक एएसपी में इस समस्या को हल कर दिया है:

विफल सर्वर सत्यापन ... से प्रतिक्रिया whatever.asp

<% 
response.status "406 Not Acceptable" 
response.write "error message here" 
response.end 
%> 

जो भी त्रुटि संदेश whatever.asp भेजा onerror: के माध्यम से पहुँचा जा सकता है , और फ़ील्ड मूल मान पर रीसेट हो जाएगी।

$("#editable_text").editable("whatever.asp", { 
    indicator : "Saving...", 
    tooltip : "Click to edit...", 
    type : "text", 
    onerror: function (settings, original, xhr) { 
     original.reset(); 
     //do whatever you want with the error msg here 
     alert(xhr.responseText); 
    }  
}); 

(और यदि मान सर्वर सत्यापन पास करता है, तो केवल प्रतिक्रिया।लिखना जो भी अद्यतन मान है)

+1

+1 आतंक का जिक्र करने के लिए +1, जो काम करता है, लेकिन प्रलेखित प्रतीत नहीं होता है। हालांकि, मुझे लगता है कि 406 406 से अधिक उपयुक्त होगा, क्योंकि 406 विशेष रूप से स्वीकार किए गए हेडर के बारे में है। – Brilliand

0

प्रलेखन कहते हैं, 'कॉलबैक' समारोह के पहले पैरामीटर "मूल्य" है:

'callback': function (value, settings) { 
... 

क्या प्रलेखन कहना नहीं कि "मूल्य" यहाँ है करता है सर्वर जो भी लिखता है वह है। यह कच्चे मूल्य तक ही सीमित नहीं है। मैं एक JSON एन्कोड संरचना वापस भेजने, इसलिए मेरे कॉलबैक फ़ंक्शन की पहली पंक्ति यह है:

var updateInfo = JSON.parse(value); 

और फिर मैं क्षेत्रों updateInfo संरचना से जरूरत के रूप में खींच।

संबंधित मुद्दे