สอบถามเรื่อง jquery ajax post ครับเนื่องจากต้องเรียกข้อมูลจาก db มาแสดงในแต่ละแถวโดย this แถวนั้ๆแต่ว่ามันไม่แสดงครับ
จากโค้ดด้านล่างคือ เป้นการกรอกข้อมูลใน input textbox แต่ละแถวเมื่อกรอกเสร็จมันจะไปดึงค่า price มาแสดงใน id="price"
แต่ที่ผมทํามันดึงค่ามาได้แต่มันไม่ยอมแสดงใน id="price" ครับเวลาเช๊ค console.log(data[0].price); ข้อมูลมาปกติครับ
Code (JavaScript)
$('#ratio', this).keyup(function(){
//console.log(i);
$('.tbl tbody tr').each(function(){
var ratio = parseFloat($('#ratio', this).val());
$.getJSON( '<?php echo base_url(); ?>index.php/sub/load_price/'+ratio, function (data) {
console.log(data[0].price);
$('#price', this).val(data[0].price);
$('#id_sub', this).val(data[0].id_sub);
});
});
});
Tag : PHP, HTML/CSS, JavaScript, Action Script, Ajax, jQuery
Date :
2013-12-17 13:53:50
By :
kenghockey
View :
905
Reply :
8
ใช้แค่นี้ไม่ได้หรอครับ
Code (PHP)
$('#price').val(data[0].price);
ผมลืมดู ลองแบบนี้
Code (PHP)
$(this).find('#price').val(data[0].price);
ประวัติการแก้ไข 2013-12-17 14:37:25
Date :
2013-12-17 14:34:14
By :
Manussawin
ยังไม่ได้เลยครับ
Date :
2013-12-17 15:42:44
By :
kenghockey
ใช้อยู่ครับตามนี้เลย
getseafood.php
<?php
header("Content-type:text/html; charset=UTF-8");
require_once("../include/dbconnect.php");
$product_id=$_POST["product_id"];
$Sql = sprintf("
SELECT * FROM `seafood` WHERE product_id = '%s'"
,mysql_real_escape_string($product_id));
$Query = mysql_query($Sql);
$intNum = mysql_num_fields($Query);
$items = array();
while($Result = mysql_fetch_array($Query)){
$arrCol = array();
for($i=0;$i<$intNum;$i++)
{
$arrCol[mysql_field_name($Query,$i)] = $Result[$i];
}
array_push($items,$arrCol);
}
mysql_close($conn);
echo json_encode($items);
?>
Code (JavaScript)
<script language="JavaScript">
$(document).ready(function(){
//ฟังก์ชั่นดึงราคาสินค้าและอื่นๆ
$('#product_id').change(function(){
$.ajax({
url: "getseafood.php" ,
type: "POST",
data: 'product_id=' +$("#product_id").val()
})
.success(function(result) {
$("#price").empty();
var obj = jQuery.parseJSON(result);
$.each(obj, function(key, val) {
$("#price").val(val["price"]); //ดึงข้อมูลอื่นๆมาโชว์ก็ได้ครับตามชื่อฟิลด์
});
});
});
});
</script>
Date :
2013-12-17 16:54:41
By :
GhostLocal
คือของผมมันใช้หลายแถวเลยครับ
Date :
2013-12-18 09:26:23
By :
kenghockey
ลองเปลี่ยน $('#price') จาก ID เป็น class แทนครับ $('.price')
Date :
2013-12-18 09:40:35
By :
Manussawin
ตอนนี้ผลที่ออกมาคือ มีแถวหลายๆแถว เมื่อพิมใน textbox เพื่อให้ไปเรียกค่า price มาแสดงมาจะลง .sum_price ทุกแถวครับ
Code (JavaScript)
$('.ratios', this).keyup(function(){
var ratio = parseFloat($(this).val());
console.log(ratio);
$.getJSON( '<?php echo base_url(); ?>index.php/ctl_sub/load_price/'+ratio, function (data) {
console.log(data[0].price);
$('table.tbltppsdtl tbody tr').each(function(){
$('.sum_price', this).val(data[0].price);
});
});
});
Date :
2013-12-18 10:13:16
By :
kenghockey
ผมไม่เข้าใจว่าทําไมเวลา done แล้วส่งค่าที่ได้จากการค้นหาจาก db แล้วจะจับมันลง input value แถวนั้นๆมันใช้ this ไม่ได้ครับ
ใครพอจะทําได้ไหมครับงมมาหลายวันแล้ว
Code (JavaScript)
$('.ratios', this).keyup(function(){
var ratio = parseFloat($(this).val());
var sum_price = $('.sum_price', this);
//console.log(ratio);
$.ajax({
type: 'post',
url: '<?php echo base_url(); ?>index.php/ctl_tsub/load_price',
data: {ratios: ratio},
context: this
}).done(function(data) {
var obj = jQuery.parseJSON(data);
var price = obj[0].price;
$('.sum_price', this).val(price);//ตรงนี้ครับ ผมต้องการให้เวลาค้นหาเสร็จให้เอาค่าที่ได้มาที่แถว เดี๋ยวกับ textbox ที่พิมค่าเข้าไปค้นหา แต่มันไม่ยอมลงครับ ถ้าเปลี่ยนเป็น $(this).val(price); มันจะลงช่องที่พิมข้อค้นหาเลยครับ
console.log(obj[0].price);
});
});
Date :
2013-12-18 11:58:01
By :
kenghockey
ถ้าแบบนั้นต้องใช้ .parent(); ช่วยหาว่าต้องใส่ที่แถวไหนโดยดูจาก html เอา
Date :
2013-12-18 12:47:08
By :
Krungsri
Load balance : Server 04