XMLHttpRequest при клике очистите ответ, прежде чем делать другой запрос - PullRequest
0 голосов
/ 02 июля 2019

У меня есть запрос XMLHttpRequest, который возвращает через API стоимость доставки.

Я активировал запрос по нажатию кнопки.Когда я запрашиваю другую цитату, ответ «print» совпадает с первым запросом, но в консоли я вижу разные данные.

Почему я не вижу правильный ответ?Как мне всегда печатать только обновленный запрос?

$ ("#checkers") .click (function () {

var myKey = "xxxxx";
var name = $('#Inputfield_pad_firstname').val();
var company = $('#Inputfield_company_name').val();
var street1 = $('#Inputfield_pad_address').val();


var xhttp = new XMLHttpRequest();
    xhttp.onreadystatechange = function() {
    if (this.readyState == 1) {
        $('#wrap_Inputfield_shipping_choose').css("opacity",".4");
        $('#Inputfield_shipping_choose_1').nextAll().remove();
        $('#Inputfield_shipping_choose_2').nextAll().remove();
    }
    if (this.readyState == 4) {
        console.log( this.response );
        $('#wrap_Inputfield_shipping_choose').css("opacity","1");
        $('#Inputfield_shipping_choose_1').after("<p>JS<b><?= $rate['Rates'][0]['carrier_label'] ?></b> costo: <?= $rate['Rates'][0]['rate'] ?> Tempo<?= $rate['Rates'][0]['delivery_days'] ?></p>");
        $('#Inputfield_shipping_choose_2').after("<p>JS<b><?= $rate['Rates'][1]['carrier_label'] ?></b> costo: <?= $rate['Rates'][1]['rate'] ?> Tempo<?= $rate['Rates'][1]['delivery_days'] ?></p>");
    }
};
xhttp.responseType = 'json';
xhttp.open("POST", 'https://www.xxxxx.it/form/getRates.php', true);
xhttp.send(JSON.stringify({
            'Method' : 'GetRates',
            'Params' : {
            .... data ...
        }
    })
);

PHP part:

header('Access-Control-Allow-Origin: *');

$raw = file_get_contents('php://input');

$connection = curl_init();
curl_setopt($connection, CURLOPT_URL, 'https://www.xxxx.com/api');
curl_setopt($connection, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($connection, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($connection, CURLOPT_HTTPHEADER, array(
    "Content-Type: application/json",
    "Authorization: xxxxx",
    "password:"
));
curl_setopt($connection, CURLOPT_REFERER, $_SERVER["HTTP_REFERER"]);
curl_setopt($connection, CURLOPT_POST, 1);
curl_setopt($connection, CURLOPT_POSTFIELDS, $raw );
curl_setopt($connection, CURLOPT_RETURNTRANSFER, 1);
echo curl_exec($connection);
curl_close($connection);

1 Ответ

0 голосов
/ 02 июля 2019

похоже, что вы не обновляли интерфейс с данными, полученными через API.

Я полагаю, что эти 2 строки предназначены для обновления, верно?

$('#Inputfield_shipping_choose_1').after("<p>JS<b><?= $rate['Rates'][0]['carrier_label'] ?></b> costo: <?= $rate['Rates'][0]['rate'] ?> Tempo<?= $rate['Rates'][0]['delivery_days'] ?></p>");
$('#Inputfield_shipping_choose_2').after("<p>JS<b><?= $rate['Rates'][1]['carrier_label'] ?></b> costo: <?= $rate['Rates'][1]['rate'] ?> Tempo<?= $rate['Rates'][1]['delivery_days'] ?></p>");

вы должны обновить их данными из this.response вместо <?= ... ?>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...