Javascript 在AJAX之后调用PHP函数

Javascript 在AJAX之后调用PHP函数,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,当用户在我的页面上提交表单时,我使用AJAX提交信息而不刷新页面。在用户提交信息之后,我想运行一个我已经编写的显示信息的PHP函数。这是可能的,还是需要运行另一个ajax函数来更新 $(function () { $('add').on('submit', function (e) { $.ajax({ type: 'post', url: 'submit.php', data: $

当用户在我的页面上提交表单时,我使用AJAX提交信息而不刷新页面。在用户提交信息之后,我想运行一个我已经编写的显示信息的PHP函数。这是可能的,还是需要运行另一个ajax函数来更新

    $(function () {
       $('add').on('submit', function (e) {
          $.ajax({
            type: 'post',
            url: 'submit.php',
            data: $('this').serialize(),
            success: function () {
              alert('form was submitted');
            }
          });
          e.preventDefault();
          updateWords(); //PHP FUNCTION
        });
      });

第一次调用成功后,您需要运行另一个AJAX调用


JavaScript不能直接与PHP交互,因此不能从AJAX调用的success/complete函数调用PHP函数。

第一次调用成功后,需要运行另一个AJAX调用


JavaScript不能直接与PHP交互,因此不能从AJAX调用的success/complete函数调用PHP函数。

PHP是服务器端,JavaScript是客户端。 如果页面已加载,则无法从客户端调用php

所以简单的方法是ajax

在submit.php中添加:

echo json_encode($_POST);
或者

我已经写过的PHP函数

。。。你所需要的信息

在成功函数中

success: function () {
 // i don't use jquery but the response contains the json string
 console.log('the words you wanna update:',JSON.parse(response));
 // updateWords(JSON.parse(response));
}
编辑

您也不需要一个以上的ajax函数

您说您已经编写了一个脚本来向客户端显示下一个信息

将该脚本添加到submit.php

“成功”功能将为您提供所需的响应


我添加了echo
json\u编码($\u POST)因为大多数情况下,您需要的答案/更新信息都是您刚刚发布的信息。

PHP是服务器端,javascript是客户端。 如果页面已加载,则无法从客户端调用php

所以简单的方法是ajax

在submit.php中添加:

echo json_encode($_POST);
或者

我已经写过的PHP函数

。。。你所需要的信息

在成功函数中

success: function () {
 // i don't use jquery but the response contains the json string
 console.log('the words you wanna update:',JSON.parse(response));
 // updateWords(JSON.parse(response));
}
编辑

您也不需要一个以上的ajax函数

您说您已经编写了一个脚本来向客户端显示下一个信息

将该脚本添加到submit.php

“成功”功能将为您提供所需的响应


我添加了echo
json\u编码($\u POST)
因为大多数时候,您需要的答案/更新信息都是您刚刚发布的信息。

如果函数依赖于对
submit.php
finishing的AJAX调用,那么创建一个新的AJAX调用。如果没有,则只需将函数附加到submit.php,并在文件末尾调用它。

如果函数依赖于对
submit.php
finishing的AJAX调用,则创建一个新的AJAX调用。如果没有,那么只需将函数附加到submit.php并在文件末尾调用它。

您应该使用执行更新信息的ajax函数来同时更新页面本身

只需返回可用的HTML作为ajax的返回,并将其用作页面的HTML内容

示例:test.php

<script>
  function updateName() {
    var url = './test.php?inpName='  + $('#inpName').val();
    $.get( url, function( data ) {
    $( "#frmDivUpdate" ).html( data );
      alert( "Call was performed." );
    });
  }
  </script>


  <div id="frmDivUpdate">
    <form>
      Enter your name : <input name="inpName" id="inpName">
      <br>
      <input type="button" onClick="updateName();" value="Update">
    </form>
  </div>

  <?php 

  if (isset($_GET))
  {
      $inpName = $_GET["inpName"];
      echo "You updated your val to $inpName";
  }
  ?>

函数updateName(){
var url='./test.php?inpName='+$('#inpName').val();
$.get(url、函数(数据){
$(“#frmDivUpdate”).html(数据);
警报(“已执行呼叫”);
});
}
输入您的姓名:


您应该使用执行更新信息的ajax函数来同时更新页面本身

只需返回可用的HTML作为ajax的返回,并将其用作页面的HTML内容

示例:test.php

<script>
  function updateName() {
    var url = './test.php?inpName='  + $('#inpName').val();
    $.get( url, function( data ) {
    $( "#frmDivUpdate" ).html( data );
      alert( "Call was performed." );
    });
  }
  </script>


  <div id="frmDivUpdate">
    <form>
      Enter your name : <input name="inpName" id="inpName">
      <br>
      <input type="button" onClick="updateName();" value="Update">
    </form>
  </div>

  <?php 

  if (isset($_GET))
  {
      $inpName = $_GET["inpName"];
      echo "You updated your val to $inpName";
  }
  ?>

函数updateName(){
var url='./test.php?inpName='+$('#inpName').val();
$.get(url、函数(数据){
$(“#frmDivUpdate”).html(数据);
警报(“已执行呼叫”);
});
}
输入您的姓名:

作为对此的回应

我在页面上有多个表单,可能有5个不同的ajax调用 如果json更好,则不会同时调用超过2个 你是否有一些阅读材料或附加堆栈的链接 示例与此类似,因此我可以自学–user934902

首先

jquery是为旧浏览器设计的,以支持ie6不支持的基本功能

如果您希望在几乎所有浏览器上都获得完全支持,那么jquery的使用是很好的

但也有许多不好的方面:

  • 它的81kb代码是疯狂的(没有插件)
  • 与本机函数相比,它非常慢
  • 它被不知道如何编写简单javascript的ppl使用
  • 如果我们开始讨论插件的话,情况会更糟
  • 现在我们正处在一个大多数ppl使用移动设备和现代浏览器的时代 支持标准javascript 1.7。Android、ios、safari、internet explorer 10、chrome、opera和firefox支持javascript 1.7

    这些浏览器支持下面的代码

    这是我写的一个ajax函数,它处理post&get

    您可以在此处阅读有关该函数的更多信息

    一个简单的get请求是

    ajax('example.php',responseFunction);
    
    一个复杂的post函数将是

    ajax('example.php',responseFunction,'post',new FormData(form),uploadFunc,dlFunc);
    
    你需要这个

    如果你有你的表格

    <form id="myForm">
    <input name="name"> Name
    <input name="surname"> Surname
    <input name="mail"> Email
    <input name="file" type="file" multiple> File/Files
    </form>
    
    现在我们来回答你的问题:

    根据需要创建submit.php文件

    <?php
     // do whatever you need with the posted info 
     // copy files to a specific folder
     // insert/update/delete the database
     // check for errors
     // lets say no errors 
     $err=array(); 
     // load extra info from database to an array called $extrainfo
     // load some functions... (you can do what you want here)
     // like executing the function you have already written and add that info to 
     // the $extrainfo.
     $extrainfo=array('updated correctly','files copied');
     $data=array('post'=>$_POST,'files'=>$_FILES,'info'=>$extrainfo,'errors'=>$err);
     echo json_encode($data);
    ?>
    
    在这个函数中,您只需要根据响应数据进行显示

    数据
    包含您需要的一切

    这是全部代码

    复制并通过一个txt文件,并将其另存为
    submit.php
    。 我现在只测试了chrome

    <?php
    if($_POST){
    $err=array();
    $extrainfo=array('updated correctly','files copied');
    $data=array('post'=>$_POST,'files'=>$_FILES,'info'=>$extrainfo,'errors'=>$err);
    echo json_encode($data);
    }else{
    ?><!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>upload</title>
    <script>
    var form,result;
    function ajax(a,b,e,d,f,g,c){
     c=new XMLHttpRequest;
     !f||(c.upload.onprogress=f);
     !g||(c.onprogress=g);
     c.onload=b;
     c.open(e||'get',a);
     c.send(d||null)
    }
    function SUCCESS(){
        console.log(JSON.parse(this.response));
     var data=JSON.parse(this.response);
     if(data.errors.length>0){
      result.textContent='you have some errors:'+data.errors[0];
     }else{
      result.textContent=JSON.stringify(data, null, '\t');
     }
    }
    window.onload=function(){
     form=document.getElementById('myForm');
     result=document.getElementById('response');
     form.onsubmit=function(e){
      e.preventDefault();
      ajax('submit.php',SUCCESS,'post',new FormData(this));
     }
    }
    </script>
    </head>
    <body>
    <form id="myForm">
    <input name="name"> Name
    <input name="surname"> Surname
    <input name="mail"> Email
    <input name="file[]" type="file" multiple> File/Files
    <input type="submit" value="send">
    </form>
    <pre id="response"></pre>
    </body>
    </html>
    <?php
    }
    ?>
    
    
    上传
    var形式、结果;
    函数ajax(a、b、e、d、f、g、c){
    c=新的XMLHttpRequest;
    !f | |(c.upload.onprogress=f);
    !g | |(c.onprogress=g);
    c、 空载=b;
    c、 打开(e | | get',a);
    c、 发送(d | |空)
    }
    函数成功(){
    log(JSON.parse(this.response));
    var data=JSON.parse(this.response);
    if(data.errors.length>0){
    result.textContent='您有一些错误:'+data.errors[0];
    }否则{
    result.textContent=JSON.stringify(数据,null,“\t”);
    }
    }
    window.onload=function(){
    form=document.getElementById('myForm');