【发布时间】:2017-12-01 20:39:24
【问题描述】:
我在使用 ajax 实现 jquery 自动完成时遇到了困难,同样的功能适用于另一个表,但在 2 个表(sales_man,Cashcustomer)中,它的返回空数组但第一个表(customerMaster)工作正常,并将每个客户列为其请求. 我的代码
myApp.js
$('#custName').autocomplete({
minLength: 1,
autoFocus:true,
source: function( request, response ) {
$.ajax({
url: "/test/ajax/ajaxOpRespond.php",
data: {action:'Get_CashCust_Code', code:request.term},
dataType:'JSON',
type: "POST",
success: function( data ) {
var result = [];
if(data.length > 0){
for(var i=0;i<data.length;i++){
result[i] = { "value" :data[i].CUST.CUST_NAME+" ("+data[i].CUST.TELE_NO+")",
"custName":data[i].CUST.CUST_NAME,
"custtel1":data[i].CUST.TELE_NO,
};
}
}
else{
alert("jesha mesha");
$('#custType').val("new");
}
response(result);
},
error: function(xhr, textStatus, errorThrown){
alert("fail"+errorThrown);
var result = [];
response( result );
}
});
},
select: function( event, ui ) {
$("#custName").val(ui.item.custName);
$('#custTel1').val(ui.item.custtel1);$('#custTel1').attr("readonly","true");
$('#custType').val("old");
return false;
}
});
ajaxController.php
case 'Get_CashCust_Code':
$code = $_POST['code'];
$msql = "SELECT [ID]
,[CUST_NAME]
,[TELE_NO] FROM [dbo].[tbl_CashCustomer_Master] WHERE [CUST_NAME] LIKE '%{$code}%' ;";
$stmt = sqlsrv_query( $conn, $msql);
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true));
}
if( sqlsrv_fetch( $stmt ) === false || sqlsrv_has_rows( $stmt ) === false) {
die( print_r( sqlsrv_errors(), true));
}
$rows = array();
while( $r = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) {
$rows[] = array('CUST' => $r);
}
sqlsrv_free_stmt( $stmt);
echo json_encode($rows);
break;
在 ajax 请求时它只返回 '[]'
请帮忙
【问题讨论】:
-
这很容易受到sql注入攻击
-
那是
request.term? -
@Psi 我知道一旦完成,我将修补所有安全漏洞
-
检查您的浏览器控制台是否有错误。在您的浏览器网络选项卡中检查 ajax 请求实际返回的内容。如果这不正确,那么服务器端可能有问题。这是您可以自己进行的所有基本调试。
-
@Forbs 是搜索输入值
标签: php jquery ajax sql-server-2012 sqlsrv