Отправка переменной из php внутри javascript

1

У меня есть электронная коммерция, и она использует 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?

Изображение 174551

  • 1
    Ваш вопрос несколько расплывчатый. Если вы хотите «отправить» переменную в order.php возможно, вы перенаправили заголовок ( header("Location: order.php"); ) - это то, что вы ищете. Если вы хотите использовать функции из order.php, вы можете использовать классовый подход (определяющий, включая и инициирующий, то есть). Пожалуйста, будьте более точны в том, что вы действительно хотите.
  • 0
    когда я пытаюсь вставить весь код здесь, это говорит об ошибке, чтобы отправить. Я слишком нуб в программировании PHP. Я узнаю больше. спасибо за совет
Теги:

3 ответа

0

используйте 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.
}
0

Если вы хотите получить определенное значение с тем же запросом, который дает вам 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.

0

Вы можете кодировать весь массив $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. Напишите ему все, что вы хотите запомнить, затем прочитайте его, когда вам это нужно на другой странице.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню