2015-10-02 64 views
-1

警報後我有一個網頁使用if ($_POST['action'] == 'Test SMS')來執行的代碼兩個提交按鈕爲我的「測試短信」按鈕。我需要從PHP腳本執行代碼,然後在不離開頁面時給出一個警告框。執行PHP腳本,而不會離開當前頁面

我一直在閱讀,ajax是做到這一點的方式,我試過了,但是index.php和updateUserConfig.php在不同的服務器上,所以我得到了跨域錯誤。

它也似乎我無法正常使用header()功能,但目前幾乎代碼不正是我想要的。它在不離開頁面的情況下執行腳本,但我沒有收到警報彈出窗口。

我試着JS重定向,但它不會重定向到「OK」上點擊我的警報按鈕,所以直到然後在瀏覽器被定向到我不想一個空白頁。

我上的index.html使用JS嘗試過,但在執行腳本之前,我提醒了,我不容易接觸到的PHP變量,以提醒什麼電話號碼的測試文本被送到。

的index.html

<form action="updateUserConfig.php" method="post"> 
<input type='submit' name='action' value='Test SMS' class='btn-test'> 
<input type="submit" name="action" value="Save" class="btn btn-primary"> 
</form> 

updateUserConfig.php

if ($_POST['action'] == 'Test SMS') { //action for Test SMS Button 

    //grab ntid and phone from header 
    if(isset($_POST['ntid'])) $ntid = $_POST['ntid']; 
    if(isset($_POST['phone'])) $phone = $_POST['phone']; 

    //using the notify_sms_users funtion from send_notification.php 
    require 'send_notification.php'; 
    notify_sms_users(array($ntid), "", 4); 

    //alert user that there message has been sent 
    $alert = "Your message has been sent to " . $phone; 
    echo '<script type="text/javascript">alert("'.$alert.'");'; 
    echo '</script>'; 

    header('Location: index.php'); 

} else {-----action for other submit button------} 
+0

阿賈克斯絕對是要走的路。你應該走這條路線,然後問這個問題,而不是一個新的問題。 –

+0

我沒有收到關於已經發送的頭的任何錯誤,所以我不知道這個問題是如何重複的 –

+0

@marc我仍然是一個新手很多,並已審查的帖子,說我的問題已經回答了我無法找到任何有助於我找到解決方案的東西。我一直在爲此工作好幾天。我也是相當新的實際上發佈堆棧溢出的東西,並發現它令人沮喪,我可以花費這麼多時間研究,當我最終伸出援手時,我得到了我的問題關閉和模糊的否定迴應 –

回答

1

這是不容易的......你可以不喜歡這樣,如果你提交表單到一個IFRAME,但是我們在考慮了今天的時尚。然而,以最小的變化也可以與您當前的代碼打交道 - 你只需要改變窗體標籤,並添加iframe元素:

<iframe name="myIframe" id="myIframe"></iframe> 
<form action="updateUserConfig.php" method="post" target="myIframe"> 

這樣你就可以在開機自檢後報警,但因爲接收PHP將運行的iframe裏面,你將不得不使用JavaScript來瀏覽(原件)頁面。這部分很簡單 - 非常不尋常。你必須做一個

parent.location="mynextpage.php" 

做到這一點。而且,這對於跨域的東西也有限制。 (對於這些問題,google爲「Access-Control-Allow-Origin」,這是官方的解決方案 - 你也許會看到一些骯髒的解決方法。)

隨着AJAX,當然,一切都不一樣。但我無法在一篇文章中解釋 - 它需要一種顛倒的方法,您需要提交表單,從處理後的PHP腳本中取回某些內容,然後再使用您的原始JavaScript會發出警報。如果你之前沒有這樣做,我不會推薦這種方式。

相關問題