2012-10-20 41 views
5

Xin chào, tôi đang cố đọc json từ máy chủ từ xa bằng cách sử dụng đoạn mã này.Jquery Nhận json từ máy chủ từ xa

<!DOCTYPE html> 
<html> 
<head> 
<script src="jquery.js"></script> 
<script> 
$(document).ready(function(){ 
$("button").click(function(){ 
$.getJSON("http://50.116.19.49/rest/user.json",function(result){ 
    $.each(result, function(i, field){ 
    $("div").append(field + " "); 
     }); 
    }); 
    }); 
}); 
</script> 
</head> 
<body> 

<button>Get JSON data</button> 
<div></div> 

</body> 
</html> 

Vấn đề là khi tôi nhập url vào trình duyệt, tôi lấy json từ đó. Nhưng không lấy được json bằng cách sử dụng phương thức jquery trên.

Ai đó có thể trợ giúp về vấn đề này. Cảm ơn

+2

Trừ khi các máy chủ từ xa cho biết thêm các tiêu đề cross-nguồn gốc thích hợp, bạn không thể. Bạn có kiểm soát dịch vụ từ xa không? – PhonicUK

+0

Dịch vụ json được cung cấp ở trên là dịch vụ nghỉ ngơi Drupal. Bạn có thể cho tôi biết làm thế nào tôi nên làm qua các tiêu đề gốc. Cảm ơn bạn. –

+0

hiện REST có phiên bản đầu ra jsonp, nếu sử dụng – charlietfl

Trả lời

4

Bạn có vấn đề về tên miền chéo, vì vậy bạn cần sử dụng JSONP để thay đổi phương thức jquery của bạn như bên dưới

Nếu URL bao gồm chuỗi "callback =?" (hoặc tương tự, như được xác định bởi API phía máy chủ), yêu cầu được coi là JSONP thay thế.

$.getJSON("http://50.116.19.49/rest/user.json?jsoncallback=?",function(result){ 
    $.each(result, function(i, field){ 
    $("div").append(field + " "); 
     }); 
    }); 

jQuery Hướng dẫn sử dụng: http://api.jquery.com/jQuery.getJSON/

+0

tôi đã kiểm tra điều này nhưng nó không hoạt động. Trang web của tôi được bật CORS. –

+8

@ h_a86: thì tại sao bạn đánh dấu phần này là câu trả lời được chấp nhận. – defau1t

+0

bạn nhận được cảnh báo (trường) là gì? – GBD

0

Truy vấn tên miền chéo không được cho phép. Xem ajax jquery: can't get json/xml from other domain để biết cách giải quyết có thể xảy ra. Cách khác là sử dụng proxy trên cùng một tên miền để truy vấn cục bộ proxy cho máy chủ từ xa.

6

Tôi cồng kềnh cho rằng trang này không được phân phát từ trang lưu trữ JSON.

Bạn đang cố thực hiện yêu cầu tên miền chéo, trong đó hầu hết (?) Trình duyệt cho phép. Bạn đang gặp phải những gì được gọi là chính sách cùng nguồn gốc của trình duyệt. Đó là một biện pháp an ninh được tích hợp trong trình duyệt. Nó sẽ không cho phép bạn thực hiện một yêu cầu XHR đến một vị trí không có cùng nguồn gốc với trang yêu cầu.

Có một vài cách khoảng này:

  1. Sử dụng một proxy server-side để thực hiện yêu cầu
  2. sử dụng JSONP để thực hiện yêu cầu (Xem trả lời GBD của)
  3. Nhìn vào CORS
+0

Xin chào, tôi đã kiểm tra liên kết cuối cùng và cũng đã xác minh rằng trang web của tôi đã được bật CORS. –

+0

Sau đó nhìn vào Bảng điều khiển JS, nó sẽ nói gì với bạn? Bạn đang dùng trình duyệt nào? –

+0

Tôi đang sử dụng Chrome. Có cách nào khác để làm điều này bất kỳ jquery hoặc javascript hack. –

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