2011-03-10 13 views
30

मैं एक फॉर्म को सत्यापित करने के लिए jquery मान्य प्लगइन का उपयोग करने और AJAX अनुरोध के साथ सामग्री सबमिट करने का प्रयास कर रहा हूं।

यह कोड मेरे दस्तावेज़ के प्रमुख में है।

$(document).ready(function() { 
    $('#contact-form').validate({submitHandler: function(form) { 
     $(form).ajaxSubmit(); 
     contactSuccess() ; 
     } 
    }); 
}); 

सत्यापन कार्य करता है। हालांकि, सबमिशन सामान्य रूप से किया जाता है: जमा करने पर, पृष्ठ पुनः लोड होता है। बेशक, मेरे पास उन ब्राउज़रों के लिए गैर-जेएस फ़ॉलबैक व्यवहार है जिनके पास जेएस सक्षम नहीं है। लेकिन मैं चिकनी उपयोगकर्ता अनुभव काम करना चाहता हूं।

त्रुटि है कि मैं फ़ायरबग में देखते हैं: $ (फार्म) .ajaxSubmit एक समारोह

क्या मैं गलत यहाँ क्या कर रही हो सकता है नहीं है?

+3

क्या आपने jquery फॉर्म प्लगइन शामिल किया था? (http://jquery.malsup.com/form/#getting-started) – yoavmatchulsky

+0

क्या आप वाकई लाइब्रेरी को सही तरीके से लोड कर रहे हैं? – treeface

उत्तर

61

मुझे लगता है कि आपके पास एक jquery फॉर्म प्लगइन शामिल नहीं है। ajaxSubmit कोर jquery फ़ंक्शन नहीं है, मुझे विश्वास है।

कुछ इस तरह: http://jquery.malsup.com/form/

+3

मृत अधिकार! त्वरित उत्तर के लिए धन्यवाद ... मैं सिर्फ HTML दस्तावेज़ के रूप में फॉर्म प्लगइन शामिल करना भूल गया था। रवींद्र! –

+0

डुयूह, ट्रैक रखने के लिए इतनी सारी स्क्रिप्ट! जवाब के लिए धन्यवाद! – SlickRemix

+0

धन्यवाद आपकी प्रतिक्रिया बहुत उपयोगी थी – Mimouni

0

मुझे लगता है कि आप ($ (this) .ajaxSubmit करने के लिए) चाहते हैं; ... भी, क्या function documentation से उदाहरण का कहना है को ध्यान में रखना:

// attach handler to form's submit event 
$('#myFormId').submit(function() { 
    // submit the form 
    $(this).ajaxSubmit(); 
    // return false to prevent normal browser submit and page navigation 
    return false; 
}); 

- यानी यह कहता है कि आप वापसी झूठी करने की जरूरत है; सामान्य ब्राउज़र को रोकने के लिए सबमिट करें।

-4
$(form).ajaxSubmit(); 

एक अन्य सत्यापन को ट्रिगर करने के परिणामस्वरूप ट्रिगर करता है।

form.ajaxSubmit(); 
+3

क्या? सच्चाई के करीब भी नहीं ... यह किसी भी प्रकार की रिकर्सन क्यों ट्रिगर करेगा ?! – mbinette

1

ajaxsubmit लाइब्रेरी को आजमाएं। यह AJAX सबमिशन के साथ ही AJAX के माध्यम से सत्यापन करता है।

भी कॉन्फ़िगरेशन किसी भी प्रकार के यूआई का समर्थन करने के लिए बहुत लचीला है।

Live demo available जेएस, सीएसएस और एचटीएमएल उदाहरणों के साथ।

<form action="postpage.php" method="POST" id="postForm" > 

<div id="flash_success"></div> 

name: 
<input type="text" name="name" /> 
password: 
<input type="password" name="pass" /> 
Email: 
<input type="text" name="email" /> 

<input type="submit" name="btn" value="Submit" /> 
</form> 

<script> 
    var options = { 
     target:  '#flash_success', // your response show in this ID 
     beforeSubmit: callValidationFunction, 
     success:  YourResponseFunction 
    }; 
    // bind to the form's submit event 
     jQuery('#postForm').submit(function() { 
      jQuery(this).ajaxSubmit(options); 
      return false; 
     }); 


}); 
function callValidationFunction() 
{ 
// validation code for your form HERE 
} 

function YourResponseFunction(responseText, statusText, xhr, $form) 
{ 
    if(responseText=='success') 
    { 
     $('#flash_success').html('Your Success Message Here!!!'); 
     $('body,html').animate({scrollTop: 0}, 800); 

    }else 
    { 
     $('#flash_success').html('Error Msg Here'); 

    } 
} 
</script> 
1

अजाक्स jQuery ajax विधि का उपयोग कर पहली पुस्तकालय jquery.js और jQuery-form.js शामिल तो html में प्रपत्र बनाने के द्वारा के साथ बाहर पृष्ठ ताज़ा फ़ॉर्म भेजें यह नया फ़ंक्शन है इसलिए आपको jQuery lib

<script src="http://malsup.github.com/jquery.form.js"></script> 

यह काम करेगा .. के बाद आपको अन्य lib फ़ाइल जोड़नी होगी। मैं परीक्षण किया है .. आशा है कि यह आप के लिए काम करेंगे ..

2

प्रयास करें:

$(document).ready(function() { 
    $('#contact-form').validate({submitHandler: function(form) { 
     var data = $('#contact-form').serialize(); 
     $.post(
       'url_request', 
       {data: data}, 
       function(response){ 
        console.log(response); 
       } 
     ); 
     } 
    }); 
}); 
+1

अपनी पोस्ट की गुणवत्ता में सुधार करने के लिए कृपया अपनी पोस्ट को समस्या का समाधान कैसे/क्यों करें। –

1

Drupal 8

Drupal 8 पृष्ठों के लिए जे एस-पुस्तकालयों स्वत: शामिल नहीं है। तो शायद यदि आप इस त्रुटि को पूरा करते हैं तो आपको अपने पृष्ठ (या फॉर्म) में 'core/jquery.form' लाइब्रेरी संलग्न करने की आवश्यकता है।इस तरह अपने कुछ रेंडर सरणी में जोड़ें:

$form['#attached']['library'][] = 'core/jquery.form'; 
संबंधित मुद्दे