yii2

2015-01-24 12 views
8

में AJAX फ़ॉर्म कैसे भेजें I मुझे अपने yii2 ऐप में HTML फॉर्म से डेटा भेजने की आवश्यकता है। मुझे इस फ़ॉर्म से डेटा भेजने के लिए AJAX का उपयोग करने और सर्वर से प्रतिक्रिया प्राप्त करने की आवश्यकता है। Yii 1.0 में मैं बहुत उपयोगी सहायक AJAXSubmitButton का उपयोग कर रहा था और मुझे नहीं पता कि yii2 में AJAX के साथ फ़ॉर्म से डेटा कैसे भेजा जाए। क्या आप मुझे बता सकते हैं कि यह कैसे करें? क्या इसके बारे में कोई लेख है?yii2

धन्यवाद।

+0

डेटा और उत्पादन किस तरह शामिल कर रहे हैं के लिए प्रस्तुत विफल रहता है? अगर वे सत्यापन उद्देश्यों के लिए हैं तो आप अंतर्निहित AJAX सत्यापन का उपयोग कर सकते हैं। – arogachev

+0

@arogachev, मुझे किसी भी AJAX सत्यापन की आवश्यकता नहीं है। मुझे बस अपने सर्वर पर जेसन डेटा भेजना है और इससे एचटीएमएल प्रतिक्रिया प्राप्त करना है। –

उत्तर

10

वाईआई एक्टिवफॉर्म अपने जीवन चक्र के कई चरणों में जावास्क्रिप्ट घटनाओं का समर्थन करता है। आप जो खोज रहे हैं उसे प्राप्त करने के लिए आप beforeSubmit ईवेंट का उपयोग कर सकते हैं। जावास्क्रिप्ट में:

$(document).ready(
    $('#myform').on('beforeSubmit', function(event, jqXHR, settings) { 
     var form = $(this); 
     if(form.find('.has-error').length) { 
      return false; 
     } 

     $.ajax({ 
      url: form.attr('action'), 
      type: 'post', 
      data: form.serialize(), 
      success: function(data) { 
       // do something ... 
      } 
     }); 

     return false; 
    }), 
); 

ध्यान दें कि आप घटना कॉलबैक से false वापस लौट कर प्रपत्र के सामान्य प्रस्तुत रोक सकता है।

0

प्रपत्र को फिर से लोड जब एक सर्वर सत्यापन नियम

$form.on('beforeSubmit', function (event, jqXHR, settings) { 

     if ($form.find('.has-error').length) { 
      return false; 
     } 

     $.ajax({ 
      url: $form.attr('action'), 
      type: 'post', 
      data: $form.serialize(), 
      success: function (datos, status, xhr) { 
       var ct = xhr.getResponseHeader("content-type") || ""; 
       //fail server validation 
       if (ct.indexOf('html') > -1) { 
        if ($(datos).find(".has-error").length) 
        { 
         modal.modal('show'); 
         modal.find(".modal-body").html(datos); 

        } 
       } 
       //real success 
       if (ct === "" || ct.indexOf('json') > -1) { 
        modal.modal('hide'); 

       } 
      }, 
      error: function (datos) { 
       alert(datos.responseText); 
      }, 
      complete: function (datos) { 
       console.log(datos); 
      } 
     }); 

     return false; 
    })