1

我正在使用这个脚本:

var test = $.ajax({ url : ("/areas/list"), type : 'GET', dataType : 'json', success : function(e) {

    } });

我得到这个结果var text

    Object {readyState: 1, getResponseHeader: function, getAllResponseHeaders: function, setRequestHeader: function, overrideMimeType: function…}
abort: function ( statusText ) {
always: function () {
complete: function () {
done: function () {
error: function () {
fail: function () {
getAllResponseHeaders: function () {
getResponseHeader: function ( key ) {
overrideMimeType: function ( type ) {
pipe: function ( /* fnDone, fnFail, fnProgress */ ) {
progress: function () {
promise: function ( obj ) {
readyState: 4
responseJSON: Object
responseText: "{↵ "kind": "fusiontables#sqlresponse",↵ "columns": [↵  "INSEE_COM",↵  "KML",↵  "NOM_COMM"↵ ]}"
setRequestHeader: function ( name, value ) {
state: function () {
status: 200
statusCode: function ( map ) {
statusText: "OK"
success: function () {
then: function ( /* fnDone, fnFail, fnProgress */ ) {
__proto__: Object

问题出在这个对象中,我只想在响应 JSON 中获取对象。我尝试使用 test.responseJSON,但它不起作用......

我怎样才能只得到 JSON?

谢谢你的帮助 !

F。

4

4 回答 4

4

您没有对成功回调中返回的数据做任何事情。

这应该有效:

var test;

$.ajax({ 
  url: "/areas/list", 
  type: 'GET', 
  dataType: 'json', 
  success: function(response) {
    // Do what ever with the response here
    console.log(response);

    // or save it for later. 
    test = response;
  } 
});

如果您决定将响应保存在变量中,您将无法立即访问它。ajax 请求不会完成。最好在成功回调中处理 JSON 对象。

于 2013-11-05T07:42:23.463 回答
3

test变量值将是$.ajax()函数调用返回的值,而不是结果。$.ajax不会立即从调用中返回值,它是异步的,这就是使用回调 ( success: function(e) {}) 的原因。当successajax 调用成功获取了它被要求获取的任何内容时,将调用回调。

检查e成功回调中的内容!

$.ajax({url: ("/areas/list"), type: 'GET', dataType: 'json', success: function(e) {
  console.log(e); // e == result from the ajax call.
}});
于 2013-11-05T07:41:28.300 回答
1

您正在尝试同步获取值,这不是一个好习惯。您应该尝试以下方法:

var test;
$.ajax({  
    url:"/areas/list",  
    type:"GET",  
    dataType:"JSONP",  
    success:function(testdata){  
    console.log(testdata);  
    test=testdata;  
    }  
});
于 2013-11-05T07:47:16.927 回答
1

1. 你返回的是 JSON 数据吗?

在您的 AJAX 中,您正在向链接发送请求/areas/list- 您如何在 Rails 控制器中处理该请求?

要让它返回 JSON 数据,它应该是这样的:

#app/controllers/areas_controller.rb
def list
    respond_to do |format|
        format.json { return :json => "hello".to_json }
    end
end

发布您的控制器代码将对我们所有人都有很大帮助


2. 您是否正确处理 JSON 数据?

JSON数据不同于“正常”的 javascript 数据。当它从服务器返回时,必须使用JSON 解析函数对其进行解析:

$.ajax({ 
     url : ("/areas/list"),
     type : 'GET',
     dataType : 'json',
     success : function(data) {
        var json_data = JSON.parse(data);
        //do what you need here with the new array
    }
});
于 2013-11-05T08:56:49.503 回答