Пара вопросов есть:
getJSON
делает запрос ajax. Запросы Ajax подчиняются Одинаковой политике происхождения . Если ваша страница не загружена из http://test.com
(или нескольких других предупреждений), она не будет работать. Возможно, вы ищете JSON-P (который также поддерживает jQuery), при условии, что сервер поддерживает его.
getJSON
, как и все ajax-запросы, по умолчанию асинхронный , поэтому ваше второе предупреждение (со списком пользователей) будет отправлено до запроса. Хотя вы можете делать синхронные запросы ajax, это очень плохая идея (во время запроса блокируется пользовательский интерфейс большинства браузеров). Вместо этого просто используйте список пользователей после получения его в обратном вызове, а не пытайтесь использовать его в функции, вызывающей getJSON
.
Редактировать : Вы сказали ниже, что пытаетесь использовать API поиска в Твиттере. Этот API поддерживает JSON-P, поэтому, если вы используете JSON-P для выполнения запроса, он должен работать. e.g.:
$(document).ready(function(){
$("#inputForm").submit(function(event){
$(":text").each(function() {
var inputText = $(this).val();
var userList = [];
var weblink = 'http://search.twitter.com/search.json?q=&ands=google';
// problem is from here.
$.ajax({
url: weblink,
dataType: "jsonp", // <== JSON-P request
success: function(data){
alert(weblink); // this statement doesn't show up
$.each(data.result, function(entryIndex, entry){ // <=== Note, `data.results`, not just `data`
userList.push(entry['from_user']); // <=== Or `entry.from_user` would also work (although `entry['from_user']` is just fine)
});
alert(userList); // <== Note I've moved this (see #2 above)
}
});
});
});
});
... но, конечно, вы не хотите делать это для каждого текстового поля в форме?
Вот живой пример , но без формы (и выполняющий только один запрос, а не запрос для каждого поля).