2012-02-13 57 views
10

Tôi đang làm theo yêu cầu get đơn giản này sử dụng jquery ajax:ajax jquery đơn giản get yêu cầu

 $.ajax({ 
      url: "https://app.asana.com/-/api/0.1/workspaces/", 
      type: 'GET', 
      success: function(res) { 
       console.log(res); 
       alert(res); 
      } 
     }); 

Nó trở về một chuỗi rỗng như một kết quả. Nếu tôi truy cập vào liên kết này trong trình duyệt của mình, tôi nhận được:

{"status":401,"error":"Not Authorized"} 

đó là kết quả mong đợi. Vậy tại sao nó không hoạt động bằng ajax? cảm ơn!

+1

có bạn đã cố gắng thêm datatype: "jsonp" trong đó –

+0

@KaiQing, isn Đó 't vấn đề ở đây cả. Nếu không, trình xử lý thành công sẽ không được gọi. Bên cạnh đó, phản hồi mẫu không phải là phản hồi JSONP. – Brad

+0

@PragmaOnce, Kiểm tra tiêu đề của bạn bằng gói tin, chẳng hạn như Wireshark. Tôi nghi ngờ bạn sẽ tìm thấy một số khác biệt giữa những gì đang được gửi từ trình duyệt, và với cuộc gọi AJAX. – Brad

Trả lời

6

Dường như với tôi, đây là một vấn đề miền chéo, vì bạn không được phép để thực hiện yêu cầu đến một tên miền khác.

Bạn phải giải pháp cho vấn đề này: - Sử dụng một kịch bản proxy, chạy trên máy chủ của bạn mà sẽ foward yêu cầu của bạn và sẽ xử lý response gửi nó vào trình duyệt Hoặc - Các dịch vụ mà bạn đang làm theo yêu cầu nên có hỗ trợ JSONP. Đây là một kỹ thuật tên miền chéo. Bạn có thể muốn đọc điều này http://en.wikipedia.org/wiki/JSONP

1

Bạn có thể yêu cầu AJAX cho các ứng dụng được tải từ miền SAME và SAME port.

Bên cạnh đó, bạn nên thêm dataType JSON nếu bạn muốn kết quả được deserialized tự động.

$.ajax({ 
     url: "https://app.asana.com/-/api/0.1/workspaces/", 
     type: 'GET', 
     dataType: 'json', // added data type 
     success: function(res) { 
      console.log(res); 
      alert(res); 
     } 
    }); 

http://api.jquery.com/jQuery.ajax/

1

tôi nghĩ rằng vấn đề là không có dữ liệu trong hàm thành công vì yêu cầu chia nhỏ lỗi 401 trong trường hợp của bạn và do đó không thành công.

nếu bạn sử dụng

$.ajax({ 
     url: "https://app.asana.com/-/api/0.1/workspaces/", 
     type: 'GET', 
     error: function (xhr, ajaxOptions, thrownError) { 
    alert(xhr.status); 
    alert(thrownError); 
    } 
    }); 

sẽ có 401 mã của bạn tôi nghĩ rằng (this link nói như vậy)

2
var dataString = "flag=fetchmediaaudio&id="+id; 

$.ajax 
({ 
    type: "POST", 
    url: "ajax.php", 
    data: dataString, 
    success: function(html) 
    { 
    alert(html); 
    } 
}); 
Các vấn đề liên quan