2013-10-25 19 views
7

Tôi đang làm việc trên một giao dịch chứng khoán jQuery sửa chữa cho một trang web.Trả lời cuộc gọi jQuery AJAX [đối tượng]

CHỈNH SỬA: Bản cập nhật ID/CLASS hoặc giá trị đầu vào trên trang web tùy thuộc vào giá trị được trả lại.

index.php:

<!doctype html> 

<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 

<meta charset="utf-8"> 
<title>load demo</title> 
<script type="text/javascript"> 
$(document).ready(function() { 
    $.ajax({ 
     url: '/datacall/demo.json', 
     dataType: 'json', 
     success: function(resp) { 
      $('#div').val(resp.currency[0].amount); 
     }, 
     error: function(req, status, err) { 
      console.log('Something went wrong', status, err); 
     } 
    }); 
    var end = parseInt($('#value').val()); 
    var newend = parseInt($('#div').val()); 
    var result = $(end * newend); 
    $('#clickme').click(function() { 
     $('#new').val(result); 
    }); 
}); 
</script> 

<div> 

    <input type="hidden" value="2500" id="value" /> 

    <input type="hidden" value="" id="div"> 

    <input type="text" id="new" value="" readonly/> 

    <input type="button" value="Change" id="clickme" /> 

</div> 

hiện tại ly nó đang trở lại:

[object Object] 

Tôi cũng đã cố gắng trả lại nó cho một div với .text()

demo.json:

{ "currency" : [ 
    { 
    "name" : "South Africa", 
    "code" : "ZAR", 
    "amount" : 0.14 
    }, 
    { 
    "name" : "America", 
    "code" : "USD", 
    "amount" : 0.64 
    }, 
    { 
    "name" : "Europe", 
    "code" : "GBP", 
    "amount" : 1.29 
    } 
] } 

Hãy có thể ai đó cho tôi biết những gì tôi đã làm sai .

Cảm ơn trước!

+1

Hãy thử sử dụng 'console.log (resp)', những gì hiện cung cấp cho rằng. – MisterBla

+0

Hiển thị phản hồi cho chúng tôi, sau đó chúng tôi có thể giúp bạn. – mguimard

+0

Chúng tôi có thể thấy nguồn cho trang 'demo.json' của bạn không? Và bạn đã thử 'console.log (resp);'? –

Trả lời

16

Bạn có thể làm điều này:

// Create some global variables 
var end = parseInt($('#value').val(), 10); 
var newend = 0; 
var result = 0; 

$.ajax({ 
    url: '/datacall/demo.json', 
    dataType: 'json', 
    success: function (resp) { 

     // Check the values in console 
     console.log(resp.currency[0].amount); 
     console.log(resp.d.currency[0].amount); 

     $('#div').val(resp.currency[0].amount); 
     newend = parseInt(resp.currency[0].amount, 10); 
     result = end * newend; 

     // No need to create a new jQuery object using $() 
     // result = $(end * newend); 
    }, 
    error: function (req, status, err) { 
     console.log('Something went wrong', status, err); 
    } 
}); 

$('#clickme').click(function() { 
    $('#new').val(result); 
}); 
.210

Vì vậy, vấn đề chính ở đây là: -

  • Bạn cần phải làm tất cả các logic result trong callback thành công ajax, như ajax là asynchronous và bạn luôn có được những giá trị trống cho end & newend biến.
  • Không cần phải làm result = $(end * newend); này vì nó tạo ra một trường hợp đối tượng jQuery mới và do đó bạn đang nhận được [object Object]
+1

Cảm ơn tất cả mọi người cho các ý kiến ​​và giúp đỡ! @palash tôi đã áp dụng này vào tập tin của tôi và tôi nhận được lỗi chưa gặp: Không thể đọc thuộc 'tệ' không xác định trên console.log (resp.d.currency [0] .amount); –

+0

@VaughanThomas Ok chỉ dành cho mục đích thử nghiệm/gỡ lỗi, bạn có thể xóa tất cả các mã 'console.log'. –

9

[đối tượng Object] về cơ bản là một mảng

Hãy thử mã này:

success: function(resp) { 
     //$('#div').val(resp.currency[0].amount); 
     alert(JSON.stringify(resp)); 
    }, 

này nên cho bạn thấy những mảng, mà sẽ cung cấp cho bạn khả năng chọn tốt hơn các yếu tố đầu ra

+1

điều này làm việc cho tôi Richard –

1

Mã này

var end = parseInt($('#value').val()); 
var newend = parseInt($('#div').val()); 
var result = $(end * newend); 

đang được đánh giá trước khi sự thành công của cuộc gọi ajax. nó cần phải được chuyển thành khối thành công

1

Bạn đang tính toán sản phẩm bên trong $()

var end = parseInt($('#value').val()); 
var newend = parseInt($('#div').val()); 
var result = end * newend; // this $(end * newend) is probably what was wrong 
Các vấn đề liên quan