从 jquery 插入变量总是失败


Inserting Variables From Jquery Always Fails

我有一些问题,我用PHP做了一些本地网站。

我有一个名为函数的文件.php这是代码:

public function saveAll($idmt_salesarea, $thn_bln, $no_pesanan, $tgl_pesan, $idms_langganan, $idms_kodebarang, $quantity, $harga, $jumlah, $disc_cash, $disc_kredit){
    $message = "Waiting input...";
    try{
        $con = new db();
        $conn = $con->connect();
        $query = "INSERT INTO mt_pesanan(idmt_salesarea,thn_bln,no_pesanan,tgl_pesan,idms_langganan, idms_kodebarang,quantity,harga,jumlah,disc_cash,disc_kredit) VALUES ($idmt_salesarea, '$thn_bln', '$no_pesanan', '$tgl_pesan', $idms_langganan, $idms_kodebarang, '$quantity', $harga, $jumlah, '$disc_cash', '$disc_kredit')";
        $result = mysqli_query($conn, $query) or die(mysqli_error($conn) . "  " . mysqli_errno());
        if($result == 1){
            $message = "Success";
        } else if($result == 0){
            $message = "Failed";
        }
    }catch(Exception $exc){
        echo $exc->getCode();
    }
        $con->disconnect();
        return $message;
}

我从名为:index的文件中获取输入参数.php并使用AJAX Jquery传递参数。参数本身被发送并指向名为 insert 的文件.php

这是插入.php文件:

 <?php
  include_once 'functions.php';
    $idmt_salesarea = isset($_GET['salesarea']);
    $thn_bln = isset($_GET['thn_bln']);
    $no_pesanan = isset($_GET['nopes']);
    $tgl_pesan = isset($_GET['tglpes']);
    $idms_langganan = isset($_GET['idlangganan']);
    $idms_kodebarang = isset($_GET['idbarang']);
    $quantity = isset($_GET['quantity']);
    $harga = isset($_GET['harga']);
    $jumlah = isset($_GET['jumlah']);
    $disc_cash = isset($_GET['disc_cash']);
    $disc_kredit = isset($_GET['disc_kredit']);
    if (($disc_cash == null) || ($disc_kredit == null)) {
        $disc_cash = 0;
        $disc_kredit = 0;
    }
    $insert = new functions();
    $insert->saveAll($idmt_salesarea, $thn_bln, $no_pesanan, $tgl_pesan, $idms_langganan, $idms_kodebarang, $quantity, $harga, $jumlah, $disc_cash, $disc_kredit);
 ?>

但是当我检查错误时,这是无法从 insert.php 文件中获取的变量(使用 $_GET 语句)。

如何正确获取变量?因为所有参数都已设置。

我知道这是结合了面向对象的风格和老式的php编码。有什么想法吗?

提前谢谢。

更新

这是使用 jQuery Ajax 发送数据的 index.php 文件

    function sendAll(){
            var tgl_pesan = $('#dpc').val();
            var sales_area = $('#sales_area').val();
            var nopes = $('#no_pesanan').val();
            var thnbln = getTahunBulan();
            var id_langganan = $('#kode_langganan').val();
            var id_barang = $('#kode_barang').val();
            var quantity = getQuantity();
            var harga = $('#harga').val();
            var jumlah = $('#jumlah').val();
            var disc_cash = $('#cash').val();
            var disc_kredit = $('#kredit').val();
            var max = $('#max').val();
            $.ajax({
                type:"POST",
                **url:"insert.php",**
                data:{
                  salesarea:sales_area,
                  thn_bln:thnbln,
                  nopes:nopes,
                  tglpes:tgl_pesan,
                  idlangganan:id_langganan,
                  idbarang:id_barang,
                  quantity:quantity,
                  harga:harga,
                  jumlah:jumlah,
                  disc_cash:disc_cash,
                  disc_kredit:disc_kredit,
                  max:max
                },
                success:function(msg){
                   alert("Data Inserted"); 
                },
                error:function(msg){
                   alert("Data Failed to save" + msg); 
                }
            });

ajax 本身指向文件插入.php插入.php正在执行另一个称为函数的文件的函数.php

问题出在这段代码上:

$idmt_salesarea = isset($_GET['salesarea']);
$thn_bln = isset($_GET['thn_bln']);
$no_pesanan = isset($_GET['nopes']);
$tgl_pesan = isset($_GET['tglpes']);
$idms_langganan = isset($_GET['idlangganan']);
$idms_kodebarang = isset($_GET['idbarang']);
$quantity = isset($_GET['quantity']);
$harga = isset($_GET['harga']);
$jumlah = isset($_GET['jumlah']);
$disc_cash = isset($_GET['disc_cash']);
$disc_kredit = isset($_GET['disc_kredit']);

对于其中每个变量,您都分配 isset() 的结果,其计算结果将为 TRUEFALSE 。如果要绑定$_GET输入的实际值,请更改以下语法中的每一行:

$idmt_salesarea = isset($_GET['salesarea']);

$idmt_salesarea = isset($_GET['salesarea']) ? $_GET['salesarea'] : '';

但是,此代码实际上不可维护,我还建议使用数组而不是将那么多参数传递给saveAll()方法。

响应您的更新

如果你发送一个带有type: "POST"的AJAX请求,你不能通过PHP访问你的输入数据$_GET超全局的,你必须使用$_POST。但是,我之前所说的仍然有效,因为您没有正确地将值绑定到变量。

虽然我不完全明白你在说什么,但仍然根据您的描述,问题可能是您使用 ajax 调用发送变量。如果 ajax 调用是异步的,则在使用它时可能无法获取该值。

因此,您可以在 ajax 调用中设置 async:false(这不是一个好方法),或者从 ajax 调用的成功回调处理程序中触发使用该变量的任何事物。

如果您可以分享一段代码来解释您的以下陈述,那将非常有帮助......"我从名为 index.php 的文件中获取输入参数,并使用 AJAX Jquery 传递参数。参数本身被发送并指向名为 insert 的文件.php"