2013-07-26 10 views
9

मेरे पास एक jQuery फॉर्म सत्यापन स्क्रिप्ट है जिसे उपयोगकर्ता सबमिट करने का प्रयास कर रहा है। मुझे फॉर्म के सत्यापन के बाद AJAX अनुरोध निष्पादित (और पूरा) के साथ एक और फ़ंक्शन चाहिए, लेकिन इसे भेजने से पहले।नियमित रूप से पहले AJAX अनुरोध

यहां लिपि है। zglosip फ़ंक्शन अलग-अलग कहलाता है ठीक है; यानी submit() फ़ंक्शन के अंदर से नहीं।

zglosip(); (समारोह है कि मैं के नाम से जाना चाहते हैं)

function zglosip() { 
     $.ajax({ 
      type : 'post', 
      url : 'res/php/nZglos.php', 
      data : { 
      "erepid" : "111", 
      "ip" : "222", 
      "poz" : "333" 
      }, 
      success : function(data, textStatus, jqXHR) { 
      tempor.html(data); 
      }, 
      error : function(XMLHttpRequest, textStatus, errorThrown) { 
      tempor.html(errorThrown); 
      }, 
      dataType : 'text' 
      return true; 
     }); 
    }; 

सत्यापन लिपि (मेरे द्वारा Joren rapini द्वारा बनाई गई और संशोधित)

पोल & tempor कुछ divs के नामों वाले चर हैं

जैसा कि आप पहले से ही पता चला है, मैंने submit() फ़ंक्शन को zglosIp() के बाद सत्य वापस करने की कोशिश की थी (अगर सेंट लिपि के तल पर एटमेंट)। दुर्भाग्य से यह काम नहीं करता है, मैंने को अलग function{return true} के साथ कॉल करने का भी प्रयास किया है, लेकिन निश्चित रूप से मैंने इसे ठीक से उपयोग नहीं किया है। कृपया मेरी मदद करें।

+0

tempor.html (डेटा); shoud $ ("# tempor")। एचटीएमएल (डेटा); और आपके पास

Hackerman

उत्तर

19

आप पहले यह सुनिश्चित करना चाहते हैं कि फ़ॉर्म सबमिट नहीं किया जा रहा है, फिर अपना AJAX कॉल चलाएं, और यदि कॉल सफल है, तो सबमिट करने के लिए आगे बढ़ें। नोट मैंने zgoslip से AJAX कॉल को हटा दिया और फ़ॉर्म के लिए सबमिट हैंडलर में डाल दिया। आप इसे जिस तरह से आप चाहते हैं पुनर्गठन कर सकते हैं:

$('form').submit(function(e) { 

    // this code prevents form from actually being submitted 
    e.preventDefault(); 
    e.returnValue = false; 

    // some validation code here: if valid, add podkres1 class 

    if ($('input.podkres1').length > 0) { 
     // do nothing 
    } else { 

     var $form = $(this); 

     // this is the important part. you want to submit 
     // the form but only after the ajax call is completed 
     $.ajax({ 
      type: 'post', 
      url: someUrl, 
      context: $form, // context will be "this" in your handlers 
      success: function() { // your success handler 
      }, 
      error: function() { // your error handler 
      }, 
      complete: function() { 
       // make sure that you are no longer handling the submit event; clear handler 
       this.off('submit'); 
       // actually submit the form 
       this.submit(); 
      } 
     }); 
    } 
}); 
+0

होना चाहिए zglosip() फ़ंक्शन की सामग्री हो सकती है जैसा आपने किया था, ठीक है। आपकी टिप्पणियों के लिए धन्यवाद मैं समझता हूं कि कोड कैसे काम करता है (मुझे लगता है, कम से कम :))। और मेरे पास एक अतिरिक्त प्रश्न है: पूर्ण होने के बाद कोड: जब AJAX कॉल सफल हो जाएगा और यह विफल होने पर दोनों निष्पादित करेगा? भरोसेमंद स्थिति यह है कि कॉल पूरा हो गया है, क्या मैं सही हूँ? संपादित करें: ठीक है, इसे मिला: http://api.jquery.com/jQuery.ajax/ आपकी मदद के लिए धन्यवाद! –

+0

मेरे पास एक प्रश्न है: क्या आप मुझे जल्द ही समझा सकते हैं, फ़ॉर्म सबमिट करने के बाद कहीं भी रीडायरेक्ट क्यों नहीं करता है? या क्या आप मुझे बता सकते हैं कि कोड के किस हिस्से को मैं और जानने के लिए और अधिक पढ़ना चाहिए? वैसे, यह ठीक है; और भी बेहतर; जो फ़ॉर्म सबमिट कर रहा है मुझे कहीं भी रीडायरेक्ट नहीं करता है :) –

+0

फ़ॉर्म दो पंक्तियों के कारण रीडायरेक्ट नहीं करता है: e.preventDefault(); e.returnValue = false; यह डिफ़ॉल्ट कार्रवाई होने से रोकता है। (इसलिए 'preventDefault')। उपरोक्त कोड को उस फ़ॉर्म के लिए "सबमिट" ईवेंट हैंडलर साफ़ करना चाहिए और AJAX कॉल पूरा होने के बाद इसे पुनः सबमिट करना चाहिए। यह पूरे हैंडलर में 2 लाइनों में किया जाता है। – quekshuy

0

मेरे मामले में मैं बटन से प्रकार प्रस्तुत दूर करने के लिए किया था और उसके बाद मैं एक विधि है कि डेटा मैं प्रस्तुत करने के लिए किया था की वैधता की जाँच की कॉल करने के लिए किया था।

<input type="button" value="Save" class="btn btn-success" id="submitbutton" /> 

तो मैं एक विधि है कि जांच करता है और सच रिटर्न अगर मैं बंद करो और जारी रखने के लिए पूछने के लिए लिखा है:

public ActionResult CheckBeforeSubbmission(datatype var1) 
{ 
    if(var1>0) 
     return Json(new { result1 = true }); 
    else 
     return Json(new { result1 = false }); 
} 

उसके बाद मैं जोड़ा जावास्क्रिप्ट/नीचे कोड अजाक्स:

$("#submitbutton").click(function (e) { 

     var self = $('#form'); 
     //A value from the form to post to the controller 
     var var1 = $('#var1elementid').val(); 


     $.ajax({ 
      type: "POST", 
      url: "/SomeController/CheckBeforeSubbmission", 
      data: { 
       var1: var1 
      },success: function (response) { 
       if (response.result1) { 
        bootbox.confirm({ 
         message: "The check failed! Do you want to submit?", 
         buttons: { 
          confirm: { 
           label: 'Yes', 
           className: 'btn-success' 
          }, 
          cancel: { 
           label: 'Cancel', 
           className: 'btn-danger' 
          } 
         }, 
         callback: function (result) { 
          if (result) { 
           self.submit(); 
          } else { 
           bootbox.hideAll(); 
           return false; 
          } 
          return false; 
         } 
        }); 
       } else { 
        self.submit(); 
       } 
      }, 
      cache: false 
     }); 
    }); 
संबंधित मुद्दे