jQueryオートコンプリートを実装しているときにajaxを使用すると、別のテーブルで同じ機能が動作しますが、2テーブル(sales_man、Cashcustomer)すべての顧客をその要求としてリストアップしてください。 AJAXリクエストに応じて 私のコードSQL Serverクエリが期待どおりに実行されていませんPHP
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;
それだけを返す '[]'
は
これは 'request.term'のSQLインジェクション攻撃 – Psi
に対して脆弱ですか? – Forbs
@Psiすべてのセキュリティ上の欠陥が修正されると、パッチが適用されることに気付きました。 –