Từ những gì tôi có thể nói là máy chủ của bạn không hỗ trợ JSONP với các yêu cầu của họ. Ví dụ:
var getUrl = 'http://webapp.armadealo.com/home.json';
$.ajax({
url : getUrl,
type : 'GET',
dataType : 'jsonp text',
jsonp: 'jsonp',
crossDomain : true,
success: function() { console.log('Success!'); },
error: function() { console.log('Uh Oh!'); },
});
Điều này có nghĩa là SyntaxError: invalid label
. Sự trở lại khi bạn có nó không được định dạng đúng JSONP. Nó phải được bao bọc để hoạt động như JSONP vì jQuery yêu cầu nó.
Vì vậy, những gì bạn đang nhận được là chính xác, nhưng nó không phải là những gì bạn cần. Những gì bạn cần cho JSONP gọi sẽ trông như thế này:
functionName({
"mall": {
"name": "South Shore Plaza",
"city": "Braintree",
"directory": "/assets/directory/0000/0094/show_floorplan.aspx",
"postal_code": "02184",
"street": "250 Granite St",
"lng": -71.023692,
"id": 147,
"phone": "(781) 843-8200",
"lat": 42.218688,
"state": "MA"
}
});
... vì những gì trở lại hiện nay là không hợp lệ JavaScript (bởi chính nó, và đó là nó là gì), và đó là cách JSONP hoạt động, phản ứng thực sự cần phải thực thi JavaScript.
Bạn có thể gặp lỗi tương tự bằng cách chỉ plopping mã đó ngay trong trang của bạn trong khối <script>
.
Nếu bạn chỉ sau khi nhúng đoạn dữ liệu, tôi khuyên bạn nên sử dụng một plugin như jQuery-oembed để thực hiện việc đó. Nếu bạn đang sau khi dữ liệu, bạn sẽ cần một cái gì đó trên máy chủ của bạn để xử lý JSON, sau đó nhận được dữ liệu từ máy chủ của bạn sau đó.
Ví dụ:
vì vậy, giả sử chúng tôi muốn tạo một tên miền chéo bằng jQuery. Đây là cách gọi jQuery $.ajax
nên hình như:
$.ajax({
dataType: 'jsonp',
data: 'id=test',
jsonp: 'jsonp_callback',
url: 'http://www.differentdomain.com/get_data.php',
success: function() {
// do something
},
});
Bây giờ ở phía máy chủ (trong get_data.php tập tin), chúng ta phải có được tên gọi và gửi dữ liệu ở định dạng JSON bọc trong chức năng gọi lại. Một cái gì đó như thế này:
<?php
$jsonp_callback = $_GET['jsonp_callback'];
$data = array('1','2','3');
echo $jsonp_callback . '('.json_encode($data).');';
?>
JSONP chỉ có thể được sử dụng khi và khi máy chủ nhúng đúng phản hồi trong lời gọi hàm JavaScript.
Hãy thử với một chuỗi JSON nhỏ hơn. – kiranvj
Máy chủ có được định cấu hình để xử lý các yêu cầu loại JSONP không? –