javascript - 如何将 ajax $.get 值传递给 jQuery 中的另一个 $.get 函数?

标签 javascript php jquery ajax

我在 jQuery 中有这些函数:

问题是我无法在函数外部传递变量branchaddress。只能在$.get();内部显示有什么方法可以传递该值,或者我需要找到另一种方法来做到这一点?

这是我的完整代码

function.js

function approveData(name, branch,email){
    var branchaddress = "";
    $.get('php/ajax-get-branch-address.php', {branch_address: branch}).done(function(data){
            ar = JSON.parse(data);
            branchaddress = ar.BRANCH_ADDRESS;
            // alert(branchaddress);
    });
    // alert(branchaddress);
    $.get("php/ajax-mail.php", 
            {
                "type": 'APPROVE', 
                "name": name,
                "branchaddress": branchaddress,
                "email"         : email
            }
        );  
}

ajax-get-branch-address.php

<?php
$connStr = "";
$conn = oci_connect("", "", $connStr);
$branch_address = $_GET['branch_address'];
$query = "select * from table where branch_name = '".$branch_address."' "; 
$result = oci_parse($conn, $query);
oci_execute($result);
$row = oci_fetch_array($result);
echo json_encode($row);
?>

ajax-mail.php

<?php
$to = $_GET['email']; 

$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: Sender <noreply@mail.com>"; 

if($_GET['type'] == "APPROVE"){
    $message =
        "<html>
            <head></head>
            <body>
                    <table style='font-family:Century Gothic'>
                    <tr>
                        <td style='padding-bottom:5%;'>Dear $_GET[name],</td>
                    </tr>
                    <tr>
                        <td style='padding-bottom:5%;'>Thank you. Detail as below :</td> 
                    </tr>
                    <tr>
                    <td style='padding-bottom:5%;'>
                        <table style='margin:0 10%;font-family:Century Gothic;'>
                            <tr>
                                <td>Officer Name</td>
                                <td style='min-width:10px'></td>
                                <td>:</td>
                                <td style='min-width:10px'></td>
                                <td>$_GET[name]</td>
                            </tr> 
                            <tr>
                                <td>Branch Address</td>
                                <td style='min-width:10px'></td>
                                <td>:</td>
                                <td style='min-width:10px'></td>
                                <td>$_GET[branchaddress]</td>
                            </tr> 
                        </table> 
                    </td> 
                    </tr> 
                    <tr>
                        <td>Thanks and regards;</td> 
                    </tr> 
                </table> 
            </body> 
        </html>";
}      
echo $message;

mail($to, "Sender", $message, $headers, "-f noreply@mail.com");
?>

感谢有人可以帮助解决此问题。

P/S:我已经在搜索这个问题,但很难理解建议的答案。

最佳答案

欢迎使用异步调用 (AJAX)!这里的问题是,当你的函数执行时,它是从上到下运行的。但是您正在对外部服务执行两个异步调用,顾名思义,它们是异步的。所以在你的代码中,它是这样的:

  1. 声明变量branchaddress
  2. php/ajax-get-branch-address.php 处进行异步调用,完成后,调用 .done() 方法
  3. 在等待响应时,再次调用 php/ajax-mail.php完成后,调用 .done()方法。

你现在看到问题了吗?您希望在第一个请求完成之前使用branchaddress,这就是该值尚未准备就绪的原因。这里有多个选项,但最简单的一个是使用回调第一个调用之后进行第二个调用,如下所示:

function approveData(name, branch,email){
    var branchaddress = "";
    $.get('php/ajax-get-branch-address.php', {branch_address: branch}).done(function(data){
            ar = JSON.parse(data);
            branchaddress = ar.BRANCH_ADDRESS;
            // alert(branchaddress);
            $.get("php/ajax-mail.php", 
                {
                    "type": 'APPROVE', 
                    "name": name,
                    "branchaddress": branchaddress,
                    "email"         : email
                }
            );
    });  
}

您还可以使用Promises让它看起来更干净一点。但我们的想法是在第一次调用完成之后而不是在它发生之前访问该值。

关于javascript - 如何将 ajax $.get 值传递给 jQuery 中的另一个 $.get 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55441426/

相关文章:

javascript - 我如何要求用户确认他们要离开页面?

javascript - 如何从大型 json 对象中获取特定数据到 Jade mixin 中

PHP in_array 没有找到那里的值(value)

php - Laravel Sail 数据库和用户未创建

javascript - 启用/禁用表单元素并一次更改按钮的值?

jquery - 删除未选择的类别选择选项

asp.net - 如何从 javascript 从 asp.net 文本框中检索值?

javascript - 在 javascript 中读取 asp HiddenField

php - 在我的 PHP 脚本中找不到错误。有人可以指出给我吗

jquery - CSS3 中的动态蒙版无法正常工作