Câu hỏi ngắn: có cách nào để thực hiện yêu cầu jsonp tới máy chủ, nắm bắt yêu cầu, nhưng không phân tích cú pháp dưới dạng javascript không? Tôi đang sử dụng dataType: "văn bản jsonp" trong jQuery 1.5 nhưng nó không hoạt động.gửi yêu cầu dưới dạng jsonp, giải thích câu trả lời dưới dạng văn bản, sử dụng jQuery 1.5
Tôi đang cố gắng truy cập URL tên miền chéo thông qua AJAX với jsonp. Vấn đề là các tên miền khác (một danh sách thư mục tại trường đại học của tôi) là rất cũ và tôi nghi ngờ máy chủ hỗ trợ jsonp.
- Trong Firefox, tôi nhận được lỗi "Tên thẻ XML không phù hợp (mong đợi META)". Trong chrome, tôi nhận được "Mã thông báo không mong đợi Uncaught SyntaxError <" vừa trỏ đến tệp tương ứng với yêu cầu AJAX của tôi. Chuỗi lỗi từ cuộc gọi lại lỗi là "parsererror".
- Tôi không thể thực hiện cuộc gọi AJAX bình thường - khi tôi thay đổi kiểu dữ liệu thành "văn bản" hoặc xóa tất cả cùng nhau, tên miền khác than phiền rằng người dùng không được xác thực và chuyển hướng đến trang đăng nhập - ngay cả khi tôi đã đăng nhập vào trình duyệt. Khi dataType là jsonp, điều này không xảy ra.
- Tôi biết máy chủ cần hỗ trợ JSONP và tôi không nghĩ rằng nó có, nhưng khi tôi thay đổi dataType thành JSONP, tôi có thể thấy tài nguyên trang phản hồi hiển thị trong cả Chrome và Firefox - vì vậy máy chủ thực sự gửi phản hồi cho trình duyệt (trang web HTML tĩnh + một số tập lệnh java) - chứa dữ liệu tôi muốn nhận.
- Vấn đề là jQuery đang cố gắng phân tích cú pháp phản hồi dưới dạng javascript và không thành công (vì nó không phải là javascript). Vì vậy, dữ liệu kết thúc trong trình duyệt - tôi chỉ cần truy cập vào nó!
- Sử dụng loại dữ liệu: "văn bản jsonp" được cho là chỉ định gửi yêu cầu jsonp và diễn giải phản hồi khi văn bản không tạo ra sự khác biệt - vẫn là lỗi phân tích cú pháp.
Điều tôi muốn là: cách truy cập phản hồi từ yêu cầu jsonp dưới dạng văn bản thuần túy. Hoặc, nếu tôi có thể truy cập phản hồi thô từ một yêu cầu jsonp không thành công - điều đó cũng sẽ hoạt động.
Cảm ơn trước!
Code:
ajax_url = 'https://somesite/?searchTerm='+query+'&searchType=lastname';
var jqxhr = $.ajax({type:"GET",
url: ajax_url,
dataType:"jsonp text",
callback: "whatever",
success:function(responseData) {
$('div#content').text(responseData.slice(0, 100));
dbg(responseData.slice(0,100));
}})
.success(function() { alert("success"); })
.error(function(obj, errStr) { alert("error"); dbg("error: " + errStr + "test: " + test.responseText + this.responseTxt);})
.complete(function() { alert("complete"); });
Bạn đã thử đặt dữ liệu truy cập của bạn bằng biến js, sau đó đính kèm nó vào thẻ js. Dường như có ý nghĩa nếu nó cố phân tích cú pháp như js. –