2013-06-05 30 views
17

tôi sử dụng các chức năng sau đây để gửi một hình thức để qua jquery ajaxphân tích jquery ajax phản ứng

$('form#add_systemgoal .error').remove(); 
var formdata = $('form#add_systemgoal').serialize(); 
$.ajaxSetup({async: false}); 
$.ajax({  
    type: "POST", 
    url: '/admin/systemgoalssystemgoalupdate?format=html', 
    data: formdata, 
    success: function (data) { 
     console.log(data); 
    }, 
}); 

Nó đăng tải tốt nhưng tôi không thể phân tích respons, nó đăng nhập để an ủi như sau

{"success":1,"inserted":{"goal_id":"67","goalsoptions_id":"0","user_id":"0","value":"dsfdsaf","created":"2013-06-05 09:57:38","modified":null,"due":"2013-06-17 00:00:00","status":"active","actions_total":"0","actions_title":"sfdgsfdgdf","action_type":"input","points_per_action":"1","expires":"2013-06-11 00:00:00","success":1}} 

mà tôi tin là phản hồi mà tôi đang tìm kiếm, tuy nhiên khi tôi cố gắng làm cảnh báo (data.success); hoặc bất kỳ thành viên nào khác của đối tượng phản hồi là không xác định.

Bất cứ lời khuyên đánh giá cao

+2

'datatype: 'json''. Bạn đã cố ý đặt tham số '? Format = html'? Nó có nghĩa là gì? – zerkms

+1

Nếu AJAX Url của bạn trả về một tiêu đề nội dung đề cập đến JSON, bạn thậm chí không cần $ .parseJSON (yourdata), vì jQuery sẽ tự động làm như vậy theo mặc định. Tôi làm điều đó, và trong mỗi câu trả lời, tôi cũng có một mã trạng thái tùy chỉnh. Bằng cách này, bạn có thể dễ dàng xác minh xem điều gì đã xảy ra. –

Trả lời

13

gọi

var parsed_data = JSON.parse(data); 

nên kết quả trong khả năng truy cập dữ liệu như bạn muốn.

console.log(parsed_data.success); 

bây giờ sẽ hiển thị '1'

+1

Không phân tích cú pháp json sau khi nhận được.Chỉ rõ 'dataType: 'json'' trong yêu cầu ban đầu của bạn và bạn sẽ nhận được json, chứ không phải văn bản. –

0

Sử dụng parseJSON. Nhìn vào cái gì đó doc

var obj = $.parseJSON(data); 

như thế này:

$.ajax({  
    type: "POST", 
    url: '/admin/systemgoalssystemgoalupdate?format=html', 
    data: formdata, 
    success: function (data) { 

     console.log($.parseJSON(data)); //will log Object 

    } 
}); 
+0

Có ý nghĩa để khắc phục vấn đề gốc chứ không phải hậu quả của vấn đề – zerkms

9
$.ajax({  
    type: "POST", 
    url: '/admin/systemgoalssystemgoalupdate?format=html', 
    data: formdata, 
    success: function (data) { 
     console.log(data); 
    }, 
    dataType: "json" 
}); 
1

Vì bạn đang sử dụng $.ajax, và không $.getJSON, kiểu trả về của bạn là văn bản đơn giản. bạn cần chuyển đổi data thành đối tượng JSON.

bạn có thể thực hiện việc này bằng cách thay đổi $.ajax thành $.getJSON (viết tắt của $.ajax, chỉ được định cấu hình trước để tìm nạp json).

Hoặc bạn có thể phân tích các chuỗi data thành JSON sau khi bạn nhận được nó, như vậy:

success: function (data) { 
     var obj = $.parseJSON(data); 
     console.log(obj); 
    }, 
3

bạn phải phân tích cú pháp JSON chuỗi để trở thành đối tượng

var dataObject = jQuery.parseJSON(data); 

vì vậy bạn có thể gọi nó thích:

success: function (data) { 
    var dataObject = jQuery.parseJSON(data); 
    if (dataObject.success == 1) { 
     var insertedGoalId = dataObject.inserted.goal_id; 
     ... 
     ... 
    } 
} 
5

Hãy tưởng tượng rằng đây là phản hồi Json của bạn

{"Visit":{"VisitId":8,"Description":"visit8"}} 

Đây là cách bạn phân tích phản ứng và truy cập vào các giá trị

Ext.Ajax.request({ 
    headers: { 
     'Content-Type': 'application/json' 
    }, 
    url: 'api/fullvisit/getfullvisit/' + visitId, 
    method: 'GET', 
    dataType: 'json', 
    success: function (response, request) { 
     obj = JSON.parse(response.responseText); 
     alert(obj.Visit.VisitId); 
    } 
}); 

này sẽ cảnh báo lĩnh vực visitId

Các vấn đề liên quan