Ajax ответ на первый запрос, но в следующем запрос не отвечает - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть несколько линий продуктов в панели сайта. В каждом ряду есть флажок для каждого товара, который определяет, есть ли товар в наличии или нет. Пользователь также должен иметь возможность изменять состояние поля инвентаризации в базе данных, установив этот флажок с текущего состояния на несуществующее и наоборот. Я использовал Ajax для этого, но код не работает должным образом.

javascript:

<script>
function showHint(item,the_location) {

        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                document.getElementById(the_location).innerHTML = this.responseText;
            }
        };
        xmlhttp.open("GET", "https://*****.com/order_check/change_stock_status.php?pro="+item, true);
        xmlhttp.send();
}
</script>

код на странице Wordpress:

<?php
        if($product->get_stock_status() == "outofstock"){
            $chkbox_value = "";
        }elseif($product->get_stock_status() == "instock"){
            $chkbox_value = "checked";
        }
        $product_id = $product->get_id();
        $order_check_path = realpath('order_check');

        echo<<<HEREDOC
                    <input type="checkbox" id="$product_id" name="$product_id" value="$product_id" $chkbox_value onClick="showHint($product_id, 'location$product_id')"><br />
                    <div id="location$product_id"></div>
HEREDOC;

PHP код:

<?php

require_once('../wp-config.php');

function correctit2($field,$istrim){
   if($istrim) $field=trim($field);
   $field=htmlspecialchars($field);
   $field=str_replace("'","",$field);
   $field=strip_tags($field);
   return($field);
}

if(isset($_GET["product_no"])) {
    $product_no = correctit2($_GET["product_no"],"true");

    $thisuser = wp_get_current_user();
    $thisroles = $thisuser->roles[0];

    if(!is_user_logged_in()){
        echo('Please sign in.');
    }else{
        if(is_numeric($product_no)){
            $con = new mysqli("localhost", "user", "password", "***");
            if ($con->connect_error) {
                die("Connection failed: " . $con->connect_error);
            }
            mysqli_query($con, "SET NAMES utf8");
            mysqli_query($con, "SET CHARACTER SET utf8");
            mysqli_query($con, "SET character_set_connection = utf8");
            $con->select_db("***");

            $sql_stock = "SELECT meta_value FROM Hb***_postmeta WHERE post_id = '".$product_no."' AND meta_key = '_stock_status';";
            $result = $con->query($sql_stock);
            $row_stock = mysqli_fetch_array($result);

            if($row_stock['meta_value'] == "outofstock"){
                $sql_stock = "UPDATE Hb***_postmeta SET meta_value='instock'
                        WHERE post_id  = '".$product_no."' AND meta_key = '_stock_status';";
                $msg = 'Yes';
            }elseif($row_stock['meta_value'] == "instock"){
                $sql_stock = "UPDATE Hb***_postmeta SET meta_value='outofstock'
                        WHERE post_id  = '".$product_no."' AND meta_key = '_stock_status';";
                $msg = 'No';
            }else{
                $msg = 'Error 1';
            }

            $result = $con->query($sql_stock);
            if ($result) {
                echo $msg;
            }else{
                echo "Error 2";
            }
        }
    }
} else {
    echo "Error 3";
}

?>
...