从Jquery插入变量总是失败

时间:2013-10-04 09:36:51

标签: php jquery mysql ajax

我有一些问题,我使用php制作了一些本地网站。

我有一个名为functions.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;
}

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

的文件

这是insert.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本身指向文件insert.php,其中insert.php正在执行另一个名为functions.php的文件中的函数

2 个答案:

答案 0 :(得分:1)

问题在于此代码:

$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。但是,我之前说过的内容仍然有效,因为您没有正确地将值绑定到变量上。

答案 1 :(得分:0)

虽然我没有得到你完全说的话,但仍然基于你的描述,问题可能是你使用ajax调用发送变量。如果ajax调用是异步的,那么在使用它时可能无法得到该值。

所以你可以在ajax调用中设置async:false(这不是一个好方法)或触发在ajax调用的成功回调处理程序中使用该变量的任何东西。

如果您可以共享解释以下语句的代码片段将会非常有用....“我从文件中获取输入参数:index.php并使用AJAX Jquery传递参数。本身被发送并指向名为insert.php的文件“