【发布时间】:2018-05-24 10:04:26
【问题描述】:
我想知道是否可以通过另一个 ajax 从一个 ajax 发送数据?
我知道这听起来令人困惑,但这里是解释:
我有一种支付方式,它通过 Ajax 获取数据并处理它们(不幸的是,这个 API 的创建者限制了他们的代码很多)所以即使我尝试在控制器代码中添加输入请求Ajax 什么都行不通,这就是为什么我需要创建另一个 Ajax 来处理该输入请求。
让我们通过代码来解释一下:
controller
public function orderspayonline(Request $request, $id){
error_log('masuk ke snap token dri ajax');
$midtrans = new Midtrans;
//products data + user info etc.
//here magic happens
try
{
$snap_token = $midtrans->getSnapToken($transaction_data);
echo $snap_token;
}
catch (Exception $e)
{
return $e->getMessage;
}
}
如果我在 try{ 部分添加任何内容(我的意思是任何内容),它将停止运行并返回错误! `即使我试图重定向回我的用户,除了回显也给出错误的令牌代码。 看来我真的别无选择,只能创建新函数和 Ajax。
JavaScript
<script type="text/javascript">
$('.pay-button').click(function (event) {
$.ajaxSetup({
headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }
});
event.preventDefault();
// $(this).attr("disabled", "disabled");
var prdfoId = $(this).data('id');
$.ajax({
url: '{{url("orderspayonline")}}/'+encodeURI(prdfoId),
type: "POST",
cache: false,
success: function(data) {
var resultType = document.getElementById('result-type');
var resultData = document.getElementById('result-data');
function changeResult(type,data){
$("#result-type").val(type);
$("#result-data").val(JSON.stringify(data));
}
snap.pay(data, {
onSuccess: function(result){
changeResult('success', result);
console.log(result.status_message);
console.log(result);
$("#payment-form").submit();
},
onPending: function(result){
changeResult('pending', result);
console.log(result.status_message);
$("#payment-form").submit();
},
onError: function(result){
changeResult('error', result);
console.log(result.status_message);
$("#payment-form").submit();
}
});
}
});
});
</script>
我需要操作的部分是snap.pay(data, {,结果返回的地方。
目前,由于我的控制器中echo $snap_token; 的结果,它们在控制台中返回并在几秒钟内消失。
我试图让它们进入隐藏输入,但正如我所提到的,我无法获得结果,因为我无法更改我的 try 代码,即使我试图在 catch 部分关闭后获取它们,同样的事情发生错误。
问题
- 如何在控制器中获取结果?
我需要使用该结果更新我的数据库。
谢谢。
【问题讨论】:
-
我认为这里的主要问题是“为什么我的控制器在我编辑代码时会出错?”。您能否向我们展示您对
try { ..代码进行了哪些编辑以及遇到了哪些错误?另外,payment-form正在由您的 JS 提交,它会将数据发送到哪里? -
@user1491032 我在
try$status_message ="$request->input('status_message'); dd($status_message);中尝试过这个,这与我在on success代码中附加的隐藏输入有关(当没有工作时,我将其删除为我的默认输入)问题),payment-form is being submitted by your JS, where does it send the data它将数据发送到第三方网站,例如 PayPal,但本地网站。 -
从
... ="$request ...中丢失" -
此代码看起来只是从您的服务器请求一个令牌,然后将其发送到
snap.pay,如果成功则提交付款表单。你还想让它做什么? -
"这是我在这里输入的错误,for answering your second comment我想在我的控制器中得到on success的结果,这就是我想要的。 (我需要在控制器中传递它们。
标签: javascript php ajax laravel