2011-12-02 14 views
14
<?php 
    /* ... SQL EXECUTION TO UPDATE DB ... */ 
?> 

<form method = "post" 
     action = "<?=$_SERVER['php_self']?>" 
     onSubmit= "window.close();"> 
    ... 
    <input type="submit" value="submit" /> 
    <input type="reset" value="reset" /> 
</form> 

मैं फॉर्म सबमिट करने के बाद पेज बंद करना चाहता हूं। उपरोक्त कोड चलाने के बाद पृष्ठ सबमिट बटन पर क्लिक करने के बाद बंद है, लेकिन SQL निष्पादित नहीं होता है।फॉर्म सबमिट करने के बाद ब्राउज़र टैब को कैसे बंद करें?

क्या कोई मेरी मदद कर सकता है? अग्रिम में धन्यवाद!

उत्तर

37
<?php  
    /* ... SQL EXECUTION TO UPDATE DB ... */ 

    echo "<script>window.close();</script>"; 
?> 

और फार्म onsubmit घटना

+2

यह – Dimple

+0

शायद काम नहीं करता है 'गूंज" ' – HighTechProgramming15

+0

यह ** ** ** काम करता है, लेकिन ऐसा इसलिए नहीं था क्योंकि मैं 'हेडर (' स्थान: text.php ') का उपयोग कर रहा था;' पहले से पहले ' मैं इसे बंद करने की कोशिश कर रहा हूं, इसलिए यदि आप 'हेडर' का उपयोग कर रहे हैं लेकिन उस PHP पृष्ठ में 'window.close() 'स्क्रिप्ट जिसका आप रीडायरेक्ट कर रहे हैं ... (' text.php' मेरे उदाहरण में) .. उम्मीद है कि यह मदद करता है। –

0

ऐसा इसलिए है क्योंकि फॉर्म सबमिट होने से पहले onsubmit ईवेंट ट्रिगर किया गया है।

अपने onSubmit को हटाएं और अनुरोध को संसाधित करने के बाद अपने PHP स्क्रिप्ट में जावास्क्रिप्ट को आउटपुट करें। आप अभी विंडो बंद कर रहे हैं, और अपने सर्वर से अनुरोध रद्द कर रहे हैं।

1

से window.close() निकालें आप कार्रवाई के रूप में एक ही पृष्ठ का उपयोग करने के है, तो आप onSubmit="window.close();" उपयोग नहीं कर सकते के रूप में यह खिड़की प्रतिक्रिया मिली है से पहले बंद हो जाएगा। आपको SQL डेटा संसाधित होने के बाद विंडो को बंद करने वाले जेएस स्निपेट को डायनामिक रूप से आउटपुट करना होगा। यह फॉर्म एक्शन के रूप में किसी अन्य पृष्ठ का उपयोग करने के लिए कहीं अधिक सुरुचिपूर्ण होगा।

7

form टैग से onsubmit हटाएं। इस बदलें:

<input type="submit" value="submit" /> 

करने के लिए:

<input type="submit" value="submit" name='btnSub' /> 

और इस बारे में:

if(isset($_POST['btnSub'])) 
    echo "<script>window.close();</script>"; 
1

कोशिश onsubmit="submit(); window.close()"

0

Window.close() काम नहीं करता है के रूप में यह हुआ करता था। यहां देखा जा सकता है:

window.close and self.close do not close the window in Chrome

मेरे मामले में, मुझे एहसास हुआ कि मैं पेज को बंद करने के जरूरत नहीं थी। ,

window.location.replace("https://stackoverflow.com/"); 
0

यह मेरे लिए शानदार ढंग से काम किया:: तो आप के साथ एक पृष्ठ पर उपयोगकर्ता अनुप्रेषित कर सकते हैं

$query = "INSERT INTO `table` (...or put your preferred sql stuff)" 
$result = mysqli_query($connect, $query); 
if($result){ 
    // If everything runs fine with your sql query you will see a message and then the window 
    //closes 
     echo '<script language="javascript">'; 
     echo 'alert("Successful!")'; 
     echo '</script>'; 
     echo "<script>window.close();</script>"; 
     } 
else { 
     echo '<script language="javascript">'; 
     echo 'alert("Problem with database or something!")'; 
     echo '</script>';   
     } 
+0

@CecileOlse n संपादन के लिए धन्यवाद, मैंने टाइपो को नोटिस नहीं किया ... – Macarrao

+0

यह अभी भी समस्या आईएमओ को हल नहीं करता है। मैं बड़ी घटनाओं के लिए एक छोटी पंजीकरण प्रणाली बनाने की कोशिश कर रहा हूं। पंजीकरण क्यूआर-कोड स्कैनिंग ("टिकट") द्वारा होता है, और मैं क्लिक की मात्रा को न्यूनतम करने की कोशिश कर रहा हूं। इस अतिरिक्त बातचीत (चेतावनी की पुष्टि/ठीक है) करने के लिए अलर्ट को अभी भी मेरी पंजीकरण टीम की आवश्यकता होगी! – MahNas92

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