2013-10-04 36 views
0

我有一些问题,我使用php做了一些本地网站。从jquery插入变量总是失败

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

我从文件输入参数调用: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编码。有任何想法吗?

在此先感谢。

UPDATE

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

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

+0

什么是错误?你想达到什么目前你无法实现? – Luke

+0

Jquery在哪里? – craig1231

+0

@Coulton的错误是insert.php文件无法获得从jQuery jQuery发送的变量。 – randytan

回答

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'] : ''; 

但是这个代码是不是真的维护了,我也建议使用数组,而不是将许多参数传递给您的方法。

在回答您的更新

如果您正在使用type: "POST" Ajax请求,则无法通过PHP $_GET访问您的输入数据的超全局的,你必须使用$_POST。但是,我之前说过的内容仍然有效,因为您没有正确地将变量绑定到变量。

+0

嗨@rainFromHeaven,这个问题被更新以便给出清楚的理解。所以我有一个文件:index.php,它使用上面的ajax发送数据。指向文件是insert.php,它执行一个名为functions.php的文件中的函数,但$ _GET方法无法获取从ajax发送的变量。任何帮助? – randytan

+0

如果你使用'type:“POST”发送一个AJAX请求,那么你必须在PHP中使用'$ _POST'。但是你必须考虑我的答案,因为你没有正确地给你的变量赋值。 – Mark

+0

噢,我的上帝,我忘了改变这一点。那是愚蠢的错误。非常感谢朋友。 – randytan

0

尽管我没有完全明白你的意思,但仍然基于你的描述,问题可能是你使用ajax调用发送变量。如果ajax调用是异步的,那么您在使用它时可能无法获得该值。

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

如果您可以分享解释您的以下声明的代码片段,这将非常有帮助。“我从文件中输入参数index.php并使用AJAX Jquery传递参数。参数本身发送并指向名为insert.php的文件“

+0

问题已更新。请再次看到问题。谢谢。 – randytan