在不离开当前页面的情况下执行php脚本后发出警报

时间:2015-10-02 21:31:25

标签: javascript php ajax forms post

我有一个带有两个提交按钮的页面,使用if ($_POST['action'] == 'Test SMS')来执行我的“测试短信”按钮的代码。我需要从PHP脚本执行代码,然后在不离开页面时给出警告框。

我一直在读ajax就是这样做的方式,我已经尝试过了,但是index.php和updateUserConfig.php在不同的服务器上,所以我遇到了跨域错误。

似乎我没有正确使用header()函数,但当前的代码几乎完全符合我的要求。它在不离开页面的情况下执行脚本,但我没有收到警报弹出窗口。

我尝试使用js重定向,但是在我的警报按钮上单击“确定”之前它不会重定向,因此在此之前浏览器将被定向到我不想要的空白页面。

我尝试在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------}

1 个答案:

答案 0 :(得分:1)

这并不容易......如果您将表单提交到IFRAME中,您可以这样做,但今天认为这已经过时了。但是,只需稍加更改即可使用当前代码 - 您只需更改表单标记并添加iframe元素:

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

这样你就可以在POST后发出警告,但由于接收php将在iframe 中运行,你必须使用javascript来导航 (原始)页面。那部分很容易 - 只是非常不寻常。你必须做一个

parent.location="mynextpage.php"

实现这一目标。此外,这也有跨域的限制。 (对于这些问题,google for&#34; Access-Control-Allow-Origin&#34;这是官方解决方案 - 您可能也会看到一些肮脏的解决方法。)

当然,使用AJAX,一切都是不同的。但是我无法在一篇文章中解释 - 它需要一个反向的方法,你提交表单,从处理帖子的php脚本中取回一些东西然后你原来的javascript会使警报。如果你以前没有这样做过,我不推荐这样做。