2011-12-02 41 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> 

Tôi muốn đóng trang sau khi gửi biểu mẫu. Sau khi chạy đoạn mã trên, trang được đóng lại sau khi nhấn nút gửi, nhưng SQL không thực thi.Cách đóng tab trình duyệt sau khi gửi biểu mẫu?

Có ai có thể giúp tôi không? Cảm ơn trước!

Trả lời

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

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

và Tháo window.close() từ mẫu onsubmit kiện

+2

nó không làm việc – Dimple

+0

có thể thay đổi nó cho 'echo "' – HighTechProgramming15

+0

Điều đó ** đã ** làm việc với tôi, nhưng không phải vì tôi đang sử dụng 'header ('Location: text.php');' function before i ' m cố gắng đóng nó, vì vậy trong trường hợp bạn đang sử dụng một 'header' nhưng kịch bản' window.close() 'trong trang PHP mà bạn đang chuyển hướng đến ... (' text.php' trong ví dụ của tôi) .. Hy vọng điều này sẽ giúp ích cho bạn. –

0

Đó là do sự kiện onsubmit được kích hoạt trước khi biểu mẫu được gửi.

Xóa onSubmit và xuất JavaScript đó trong tập lệnh PHP của bạn sau khi bạn đã xử lý yêu cầu. Bạn đang đóng cửa sổ ngay bây giờ và hủy yêu cầu tới máy chủ của bạn.

1

Nếu bạn để sử dụng trang giống như hành động, bạn không thể sử dụng onSubmit="window.close();" vì nó sẽ đóng cửa sổ trước khi nhận được phản hồi. Bạn phải tạo ra một đoạn mã JS để đóng cửa sổ sau khi dữ liệu SQL được xử lý. Tuy nhiên nó sẽ thanh lịch hơn nhiều để sử dụng một trang khác như là hành động biểu mẫu.

7

Xóa onsubmit khỏi thẻ form. Thay đổi này:

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

Để:

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

Và viết này:

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

thử onsubmit="submit(); window.close()"

0

window.close() không làm việc như trước kia nữa. Có thể thấy ở đây:

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

Trong trường hợp của tôi, tôi nhận ra rằng tôi không cần phải đóng trang. Vì vậy, bạn có thể chuyển hướng người dùng đến một trang khác với:

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

này làm việc rực rỡ đối với tôi,:

$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 Cảm ơn bạn đã chỉnh sửa, tôi không nhận thấy lỗi đánh máy ... – Macarrao

+0

Điều này vẫn không giải quyết được vấn đề. Tôi đang cố gắng xây dựng một hệ thống đăng ký nhỏ cho các sự kiện lớn hơn. Việc đăng ký diễn ra bằng cách quét mã QR ("vé") và tôi đang cố gắng tối giản hóa số lượng nhấp chuột. Cảnh báo sẽ vẫn yêu cầu nhóm đăng ký của tôi thực hiện tương tác bổ sung này (xác nhận/ok cảnh báo)! – MahNas92

Các vấn đề liên quan