2014-10-08 23 views
18

Tôi đã nghiên cứu câu hỏi này một số tiền vô lý và hy vọng rằng ai đó có thể giúp chẩn đoán những gì là sai.JsonP trả về "Uncaught SyntaxError: Mã thông báo không mong muốn:" AngularJS - routingnumbers.info

Tôi đã cố gắng nhìn vào SO câu hỏi sau: (SO sẽ không cho phép tôi gửi hơn 2 liên kết do danh tiếng, vì vậy tôi đã chỉ bao gồm các đường dẫn)

  1. questions/16344933/angularjs-jsonp-not-working/16352746#16352746
  2. questions/19269153/jsonp-request-in-angularjs-doesnt-work-like-in-jquery
  3. questions/19669044/angularjs-getting-syntax-error-in-returned-json-from-http-jsonp

Trong số nhiều người khác ......

Những điều tôi đã cố gắng: Tôi đã thêm & callback = JSON_CALLBACK đến cuối url. Tôi đã thay đổi cài đặt cấu hình như responseType: 'JSON'. Tôi cũng sắp xếp lại theo yêu cầu http.jsonp nhiều lần để chắc chắn rằng nó không phải là một cái gì đó theo chương trình/văn bản ( http ({}) & http.jsonp)

Dưới đây là những gì tôi đang cố gắng để làm: Lấy thông tin từ routingnumbers.info/api/ sử dụng yêu cầu jsonp góc (máy chủ không cho phép CORS). Tôi có thể thực hiện yêu cầu thành công với jQuery, nhưng tôi không thể làm cho nó thành công với góc cạnh.

Đây là thử nghiệm fiddle tương ứng:http://jsfiddle.net/dqcpa/14/

Như bạn thấy, tôi nhận được hai lỗi:

  1. Resource hiểu là Script nhưng chuyển với kiểu MIME text/plain: " https://routingnumbers.herokuapp.com/api/data.json?rn=071000013&callback=angular.callbacks._0 ". angular.min.js: 97
  2. của router Lỗi Cú pháp: Bất ngờ mã thông báo:

Nhưng nếu bạn đánh dấu vào câu trả lời trong DevTools chrome - NETWORK, nó là chính xác: Mặc dù tôi biết jsonp rằng sẽ trả lại phản ứng bên trong của jsonpfunction ({"MyJson": "Data"}) là nơi nó được treo lên tại.

Đây là mã gốc:

//$scope.number = '071000013'; 
var routingApiUrl = 'https://routingnumbers.herokuapp.com/api/data.json?rn=' + $scope.number; 
$http({ 
    method: 'jsonp', 
    url: routingApiUrl + '&callback=JSON_CALLBACK', 
    responseType: "json" 
}). 
success(function(data){ 
    console.log('Success: ' + data); 
}). 
error(function(data){ 
    console.log('Error: ' + data); 
}); 

Có ai sử dụng API này với góc? Tôi giả sử rằng có thể có điều gì đó tôi có thể làm (sans jquery) để sửa đổi tiêu đề, nhưng tôi đã không thể tìm thấy bất kỳ thông tin nào. Tôi cũng nghĩ rằng nó có thể là một vấn đề máy chủ (mặc dù, nếu nó đang làm việc một cách chính xác trong jquery, đó sẽ không phải là vấn đề). Có thể điều này có thể là một cái gì đó với HTTPS

TL: DR - Yêu cầu JSONP góc không hoạt động nhưng với cùng một URL, yêu cầu JSONP của jQuery đang hoạt động. Tham khảo mã trên, tôi đang thiếu gì?

Mọi trợ giúp đều tuyệt vời!

EDIT: Một số dấu câu và nội dung.

+0

không bạn cần phải thêm '? callback =' vs '& callback ='? Đó là dấu hỏi, không phải là dấu và –

+0

Đã có một? Rn = trên URL. xem routingApiUrl. Sử dụng & như là một sự tiếp nối của chuỗi truy vấn. – dannypaz

Trả lời

6

acoording câu hỏi này: How to get rid of Uncaught SyntaxError: Unexpected token : thử thêm angular.callbacks._0 (JSON) xung quanh cuộc gọi json phía máy chủ của bạn. nó làm việc cho tôi

Đây là plunker http://plnkr.co/edit/oX2UQRBA41FIHpwAP6AA

+1

phản hồi không được gói trong angular.callback._0. Đối với jQuery, cuộc gọi đang được bao bọc chính xác. Đây là mô tả chính xác cho vấn đề của tôi. – dannypaz

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