根据选择字段从数据库中获取结果

get results from database based on a selectfield

我一直在努力制作一个页面,让我可以 select 一个客户,并从数据库中获取相应的客户详细信息。 它应该看起来像这样:

<select id="select_customer">   
  <option value='1'>customer 1</option>
  <option value='1'>customer 2</option> 
</select>

public function getCustomerDetails($customerId) {
    if(isset($customerId)) {
        $customer = DB::getInstance()->query("select * from customers");
        foreach($customer->results() as $customer) {
            $str = "<li>{$customer->name}</li>";
            $str .= "<li>{$customer->name_contactperson}</li>";
            $str .= "<li>{$customer->email}</li>";
            $str .= "<li>{$customer->address} {$customer->house_number}</li>";
            $str .= "<li>{$customer->postalcode}</li>";
            $str .= "<li>{$customer->city}</li>";
            $str .= "<li>{$customer->country}</li>";
        }

        return $str;
    } 
    return false;
}

我现在想做的是使用 ajax 从 select_customer post 中获取值到 getCustomerDetails 方法,并在不重新加载页面的情况下获取相应的详细信息。 我试图让它与 ajax 和 xAjax 一起工作,但我无法让它工作。

我试过这个:

<?php include 'xajaxAIO.inc.php'; 
$xajax = new xajax(); 
$xajax->register(XAJAX_FUNCTION, 'getCustomers'); 
$xajax->processRequest(); ?> 
<input type="button" onclick="xajax_getCustomerDetails(1);" value="Click Me" />

我尝试的另一件事是:

<script>
document.getElementById('select_customer').addEventListener('change', function() {
    var $userId = this.value;
    $.ajax({
        type: "POST",
        url: "classes/invoice.php",
        data: "getCustomerDetails("+$userId+")"
    })
});
</script>

我的控制台中没有收到任何错误消息,但似乎请求的函数没有执行。

有谁能告诉我它是如何工作的吗?

提前致谢!

我建议只发送 $userId,然后在 invoice.php 页面中调用 getCustomerDetails($userId)。

$.ajax({
    type: "GET",
    url: "classes/invoice.php",
    data: $userId
  })
});

$.ajax({
    type: "GET",
    url: "classes/invoice.php&function=getCustomerDetails&userId="+$userId
    dataType: "json", //Dont need this if youre returning a string
    success: function(result) {
        alert(result);
    }
  })
});

然后在发票页面中,您可以使用 $_GET 变量调用该函数,如下所示:

 $response = 'error;
 if($_GET['function'] == 'getCustomerDetails'){
      if(!empty($_GET['userId'])){
           $_GET['userId'] = 0;
       }
       $userID = $_GET['userId'];
       $response = getCustomerDetails($userID);
 }
die(json_encode($response)); //for array
die($response); //for a string

如果您使用 xajax 框架...您需要注册新功能...

<?php include 'xajaxAIO.inc.php'; 
$xajax = new xajax(); 
$xajax->register(XAJAX_FUNCTION, 'getCustomers');
$xajax->register(XAJAX_FUNCTION, 'getCustomerDetails'); 
$xajax->processRequest(); ?> 
<input type="button" onclick="xajax_getCustomerDetails(1);" value="Click Me" />

<?php function getCustomerDetails($id){
    ///////////////////////////////////////////////
    ///// And use framework xajax to response /////
    ///////////////////////////////////////////////
}?>