अंतिम संपादन:MVC3 Ajax.BeginForm onSuccess फ़ायरफ़ॉक्स में नहीं चलता है
बाद डैरिन दिमित्रोव से जवाब के बाद, मैं ने पाया है कि समस्या यह है कि नियंत्रक विधि UpdateForm()
लिए AJAX फोन था समाप्त हो गया एक खाली स्ट्रिंग लौट रहा है। यह एक संशोधन था जिसे मुझे एक अलग समस्या का सामना करने के बाद कुछ समय पहले जरूरी पाया गया था। एक खाली स्ट्रिंग पास करने से फ़ायरफ़ॉक्स के पार्सर को चकित कर दिया गया था (जबकि क्रोम और आईई की परवाह नहीं थी, जाहिर है) इसलिए मैंने रिक्त स्ट्रिंग को खाली div
के साथ बदल दिया।
संपादित करें:
नीचे डैरिन दिमित्रोव के सुझावों के लिए धन्यवाद, मैं ने पाया है कि कारण मैं परेशानी हो रही किया गया था एक त्रुटि के कारण फेंके जब भी प्रश्न से संबंधित फ़ॉर्म प्रस्तुत किया जा रहा है।
त्रुटि पढ़ता "नोड पदानुक्रम में निर्दिष्ट बिंदु पर नहीं डाला जा सकता है।" फॉर्म जमा होने पर हर बार इसे फेंक दिया जाता है। मैंने पोस्ट डेटा में देखा है कि ऐसा लगता है कि यह एक XMLHttpRequest है। क्या यह कारण है (प्रश्न में AJAX अनुरोध सिर्फ HTML लौटा रहा है)? यहाँ Firebug से पोस्ट डेटा है:
यह त्रुटि लिखा है "XML पार्सिंग त्रुटि - कोई तत्व नहीं मिला"।
FYI करें - एचटीएमएल लौटाए जाने हमेशा एक खाली स्ट्रिंग है ...
मैं एक MVC3 आवेदन IIS7 पर चल रहा है।
<form action="/RootName/ControllerName/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox" data-ajax-update="#TargetDiv" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
क्या मैं मूल रूप से कर रहा हूँ:
@using (Ajax.BeginForm("UpdateForm", new AjaxOptions { UpdateTargetId = "TargetDiv", InsertionMode = InsertionMode.InsertAfter, OnSuccess = "ClearTextBox" }))
{
@Html.TextArea("txtInput", new { id = "txtInput", cols = "20", rows = "5", wrap = "virtual" })
<input id="send" class="button" type="submit" value="Send"/><br />
}
यह निम्न HTML जब नियंत्रक इस दृश्य प्रदान करता है उत्पन्न करता है: मेरे विचार से एक में, मैं एक रूप एक Microsoft HTML सहायक समारोह का उपयोग कर बनाया जा रहा है यहां यही प्रयास TextArea
बुलाया txtInput
के अंदर का पाठ लेने के लिए और Div
के अंत TargetDiv
बुलाया से संलग्न है जब भी ऊपर Send
बटनसे और स्पष्ट क्लिक किया जाता है पाठ बाहर संलग्न करने के बादClearTextBox()
विधि (जावास्क्रिप्ट) के माध्यम से पूरा हो गया है। परिशिष्ट हमेशा हर ब्राउज़र में काम करता है; और जब मैं इंटरनेट एक्सप्लोरर या क्रोम में चलाता हूं, तो टेक्स्ट का समाशोधन ठीक काम करता है। हालांकि, फ़ायरफ़ॉक्स ClearTextBox()
विधि को कॉल नहीं करना चाहता है।
फ़ायरफ़ॉक्स इस हस्ताक्षर में data-ajax-success
विकल्प के साथ संगत नहीं है?
चीजें मैं
की कोशिश की है मैं इस आदमी को मिला:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
मैं इस स्क्रिप्ट बोल रहा हूँ: Ajax.BeginForm doesn't call onSuccess
समाधान इस स्क्रिप्ट को जोड़ने के लिए है :
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
... लेकिन मैंने इसे मामले में स्वैप करने का प्रयास किया। कोई आनंद नहीं है।
मैं विधि कॉल सी # चैट रुम में कुछ लोगों द्वारा कोष्ठक शामिल करने के लिए परिवर्तित करने का प्रयास करने के लिए कहा गया था ताकि एचटीएमएल इस तरह बाहर आ गया:
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox()" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
लेकिन वह मदद नहीं की।
सी # चैट में लोगों ने यह भी सुझाव मैं एक चेतावनी के साथ जावास्क्रिप्ट कॉल की जगह - कुछ इस तरह:
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="alert('yo!')" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
क्रोम संदेश बॉक्स पॉप जबकि, फायरफॉक्स नहीं करता है!
"डेटा-AJAX-सफलता" एक कस्टम विशेषता की तरह दिखता है बस यह कह रहा है कि किस विधि को कॉल करना है, इसलिए मुझे संदेह है कि यह विशेषता के साथ ही एक मुद्दा है। मुझे यकीन नहीं है कि देव क्या है। टूल्स फ़ायरफ़ॉक्स में (मैं ज्यादातर क्रोम का उपयोग करता हूं), लेकिन मैं यह देखने के लिए वहां जांच करूंगा कि यह कोड में कहीं और जेएस त्रुटियों को दिखाता है या नहीं। – justinb138
मैं फ़ायरबग का उपयोग कर रहा हूं लेकिन इसने मुझे कुछ भी इंगित नहीं किया है ... = ( –
क्या आप 'ClearTextBox()' विधि पोस्ट कर सकते हैं? बस इसे आजमाएं (फ़ाइल-> नई एमवीसी 3 प्रोजेक्ट, जिसका उपयोग 'jquery.unobtrusive-AJAX .min.js'), और एफएफ में ठीक काम करता है। ClearTextBox का मेरा संस्करण यह है: 'फ़ंक्शन ClearTextBox() {$ ("# txtInput")। वैल ("");} ' –