在ajax提交上执行php函数

时间:2013-10-25 08:18:55

标签: php ajax forms

这与在wordpress上构建的网站有关。我有一个小系统,其中来自特定div "content-div"的一些内容通过ajax提交通过电子邮件发送给我。请注意,它不使用<form>标记,因为您会在下面的代码中注意到它。其余的事情非常简单。

HTML :内容在div中生成,并通过input-type=submit提交。

<div id="content-div">
        //php generated content
</div>
<input type="submit" value="SUBMIT-CONTENT" id="button" onClick="handleFormSubmit()">

AJAX - 通过此代码完成提交和重定向。

<script language="javascript" type="text/javascript">

     function handleFormSubmit()
      {
        var button = document.getElementById('button');
        button.style.display = 'none';
      }
    </script>

    <script type="text/javascript">
      jQuery(document).ready(function($) 
       {
         $('#button').click(function(){
         $.ajax({
              type: 'POST',
              url: 'http://awesomeness.com/pathto/processForm.php',
              data:{'message':$('#content-div').html(),'client': $('#some-field').val()           },
                  success:function(data) {
                  window.location = "http://awesomeness.com/thanks/";
             }
           });
          });
         });
    </script>

ProcessForm.php只包含基本的html电子邮件代码。这是它的样子:

$to = "emailto@awesomepeople.com";
  $subject  = "NEW ARTICLE";
  $message .= $_POST['message'];
  $client   = $_POST ['client'];
  $headers = "From: awesomesite <someone@website.com>" . "\r\n";
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";           
  mail($to, $subject, $message, $headers);

所有这一切都运行良好。现在还有另一个php函数需要在访问者点击“SUBMIT-CONTENT”按钮时运行。此功能作为链接提供。

<a class='wpfp-link' href='?wpfpaction=reset' rel='nofollow'>RESET</a>

通常,单击此链接会触发一个功能,该功能基本上会清除浏览器缓存并重置主“content-div”。请注意,我不需要页面上的此功能链接。我只需要以某种方式运行提交功能。基本上当访问者点击“SUBMIT-CONTENT”时,链接中的功能应该像点击“RESET”链接一样执行。这可能发生在成功提交,然后表格必须采用其通常的例程,例如。提交到processForm.php并重定向等。我希望我所要求的是可能的。如果是这样的话?提前谢谢了。

1 个答案:

答案 0 :(得分:0)

这是不可能的,至少不是你如何形容它。

当您执行Ajax请求时,您正在发送参数,然后您可以解析请求的响应。

这里我猜wpfpaction=reset的输出将是HTML。一种可能性是使用ajax查询到wpfpaction=reset的响应替换页面的当前HTML代码。

请参阅此问题:Change HTML code without refreshing the page