gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:08:00 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com