Tôi muốn thực hiện cuộc gọi ajax ngay khi tài liệu được tải. Những gì tôi đang làm là tải một chuỗi chứa dữ liệu mà tôi sẽ sử dụng cho một tính năng tự động hoàn tất. Đây là những gì tôi đã làm, nhưng nó không gọi servlet.Cách thực hiện cuộc gọi AJAX ngay lập tức trên tài liệu đang tải
Tôi đã xóa các cuộc gọi đến các tập lệnh JS khác nhau để làm cho nó rõ ràng hơn. Tôi đã thực hiện một số lời gọi AJAX tương tự trong mã của mình nhưng thường được kích hoạt bởi sự kiện nhấp, tôi không chắc cú pháp để thực hiện ngay khi tải tài liệu, nhưng tôi nghĩ điều này sẽ là (nhưng không phải):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="../js/jquery.js" type="text/javascript">
</script>
<link rel="stylesheet" href="../css/styles.css" type="text/css">
<link rel="stylesheet" href="../css/jquery.autocomplete.css" type="text/css">
<script type="text/javascript" src="../js/jquery.bgiframe.min.js">
</script>
<script type="text/javascript" src="../js/jquery.dimensions.js">
</script>
<script type="text/javascript" src="../js/jquery.autocomplete.js">
</script>
<script type="text/javascript">
$(document).ready(function(){
$.ajax({
type: "GET",
url: "AutoComplete",
dataType: 'json',
data: queryString,
success: function(data) {
var dataArray = data;
alert(dataArray);
}
});
$("#example").autocomplete(dataArray);
});
</script>
<title></title>
</head>
<body>
API Reference:
<form><input id="example"> (try "C" or "E")</form>
</body>
</html>
EDIT: mã của tôi bây giờ trông giống như Karim:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "../AutoComplete",
success: function(data) {
$("#example").autocomplete(data);
}
});
});
Tuy nhiên autocomplete vẫn không hoạt động (phải thừa nhận là một câu hỏi hoàn toàn, vì vậy tôi cũng sẽ gửi một câu hỏi khác để nó có thích hợp chức vụ).
Biến "dữ liệu" của tôi đang được gửi lại trông giống như ... "Bản thảo | Văn bản | Đối tượng thông tin | Bóng rổ | Bóng | Thiết bị thể thao | Tarantula" .split ("|");
Nếu tôi làm
var dataArray = "Manuscript|Text|Information Object|Basketball|Ball|Sporting Equipment|Tarantula".split("|");
và sau đó
$("#example").autocomplete(dataArray);
Tất cả đều hoạt động tốt, nhưng khi tôi nhận được giá trị của dataArray từ máy chủ nó không.
Tôi đã đặt các thẻ
Chỉ cần sử dụng
Cũng đảm bảo rằng câu trả lời thực sự là một JSON. Nếu servlet đưa ra lỗi, nó sẽ không được xử lý đúng trong trường hợp của bạn. Sử dụng firebug để xem nếu servlet được gọi và phản ứng là gì. Hoặc đăng nhập tối thiểu trên serverside.
Nguồn
2010-05-10 13:35:02 Juriy
$ (tài liệu) .ready (function() {}); và $ (hàm() {}); là điều tương tự. Nếu anh ta muốn chạy mã khi trang đã tải xong và không khi DOM tải xong, anh ấy cần sử dụng $ (tài liệu) .load – Greg
Bạn đang gặp phải sự cố đó vì lệnh gọi $ .ajax thực hiện không trả lại trước khi tự động hoàn thành được khởi tạo, do bản chất không đồng bộ của XHR. Yêu cầu được gửi, luồng thực thi vào biểu thức tiếp theo trước
dataArray
đã được lấp đầy trong cuộc gọi lạisuccess
. Hãy thử điều này:Điều đó sẽ đảm bảo rằng tính năng tự động hoàn thành của bạn chỉ được khởi tạo khi nhận được phản hồi từ máy chủ.
Nguồn
2010-05-10 13:59:32 karim79
Cảm ơn tôi đã thử một cái gì đó tương tự nhưng nó vẫn không hoạt động, tôi đã hỏi một câu hỏi khác tại http://stackoverflow.com/questions/2803589/jquery-autocomplete-works-with-a-local-string-but-not-when-the-same-string-is-cal giải thích vấn đề chính xác hơn. – Ankur
Bạn có thể sử dụng các công cụ dành cho nhà phát triển Trình duyệt Google Chrome để xem máy chủ của bạn đang quay trở lại. Để truy cập pres Ctrl + Shift + I và trong giao diện công cụ của nhà phát triển, hãy kiểm tra tab mạng để xem có bất kỳ lỗi nào có thể xảy ra hoặc dữ liệu sai đến hay không.
Nguồn
2013-04-29 21:32:03 raj239
Đây phải là một bình luận. – Ren