У меня есть электронная коммерция, и она использует API-адрес агента доставки агента rajaongkir.com, я хочу использовать цену агента доставки в качестве переменной в моей базе данных.
Ее файл order.php
<script type="text/javascript" src="js/script.js"></script>
<form action="input.php?input=inputform" method="post">
<table class="zebra-table">
<thead>
<tr>
<th>Kurir</th>
<th>Servis</th>
<th>Deskripsi Servis</th>
<th>Lama Kirim (hari)</th>
<th>Total Biaya (Rp)</th>
<th>Opsi</th>
</tr>
</thead>
<tbody id="resultsbox"></tbody>
</table>
script.js
function cekHarga(){
//var origin = $('#oricity').val();
var origin = 35;
var destination = $('#descity').val();
var weight = $('#berat').val();
var courier = $('#service').val();
$.ajax({
url:'process.php?act=cost',
data:{origin:origin,destination:destination,weight:weight,courier:courier},
success:function(response){
$('#resultsbox').html(response);
},
error:function(){
$('#resultsbox').html('ERROR');
}
});
}
process.php
if(isset($_GET['act'])):
switch ($_GET['act']) {
$cost = $IdmoreRO->hitungOngkir($origin,$destination,$weight,$courier);
//parse json
$costarray = json_decode($cost);
$results = $costarray->rajaongkir->results;
if(!empty($results)):
foreach($results as $r):
foreach($r->costs as $rc):
foreach($rc->cost as $rcc):
echo "<tr><td>$r->code</td><td>$rc->service</td><td>$rc->description</td><td>$rcc->etd</td><td>".number_format($rcc->value)."</td> <td></td></tr>";
$bayarr=$rcc->value;
endforeach;
endforeach;
endforeach;
endif;
}
endif;
Я могу получить доступ к переменной $ bayarr по форме в order.php.
Как я могу отправить переменную $ bayarr на process.php на order.php?
используйте json
для отправки более 1 значения из вызова ajax.
$arr['html'] = "<tr><td>$r->code</td><td>$rc->service</td><td>$rc->description</td><td>$rcc->etd</td><td>".number_format($rcc->value)."</td> <td></td></tr>";
$arr['price'] = $bayarr=$rcc->value;
echo json_encode($arr);
В успехе ajax,
success: function(response){
var content = JSON.parse(response);
$('#resultsbox').html(response.html);
alert(response.price);// will have your price here.
}
Если вы хотите получить определенное значение с тем же запросом, который дает вам HTML, вы можете добавить параметр внутри некоторых тегов HTML в свой ответ, а затем проанализировать его.
Что-то вроде:
foreach($rc->cost as $rcc):
echo "<tr data-bayarr=\"{$rcc->value}\"><td>$r->code</td><td>$rc->service</td><td>$rc->description</td><td>$rcc->etd</td><td>".number_format($rcc->value)."</td> <td></td></tr>";
endforeach;
После этого просто приступайте к выполнению своего аякса:
success:function(response){
$('#resultsbox').html(response);
/* Because its in a foreach there will be multiple bayarrs .. */
$('#resultsbox').find('[data-bayarr]').each(function( i ) {
alert($(this).data('bayarr'));
});
},
Другой способ - преобразовать ответ в json-массив, где у вас есть значения HTML и bayarr.
Вы можете кодировать весь массив $results
, который вы зацикливаете, если вам нужно:
<input type="hidden" id="data_clustor" name="data_clustor"
value="<?php echo base64_encode(json_encode($results)); ?>">
Затем просто $('#data_clustor').val();
и передайте его на следующую страницу PHP, где вы просто выполните:
$results=json_decode(base64_decode($_POST['data_clustor']));
и зацикливать его снова и снова. Или передавайте только те данные, которые вам интересны, а не весь массив.
Не видя код, который вызывает cekHarga()
или элементы, на которые вы ссылаетесь:
var destination = $('#descity').val();
var weight = $('#berat').val();
var courier = $('#service').val();
Будет немного сложно понять, что вы пытаетесь сделать, поскольку неясно, где вы вытаскиваете эти поля с этими идентификаторами, если ни один из кода, который вы нам показали, не содержит.
Кроме того, просто используйте сеансы PHP и сохраните информацию, загруженную на сервере, для конкретного пользователя в $_SESSION
. Напишите ему все, что вы хотите запомнить, затем прочитайте его, когда вам это нужно на другой странице.
order.php
возможно, вы перенаправили заголовок (header("Location: order.php");
) - это то, что вы ищете. Если вы хотите использовать функции из order.php, вы можете использовать классовый подход (определяющий, включая и инициирующий, то есть). Пожалуйста, будьте более точны в том, что вы действительно хотите.