Оберните свои строки в / /i
. Это простой способ использовать регулярное выражение для игнорирования обсадной колонны
У вас есть несколько разных ошибок. Во-первых, $ .get не возвращает значение, возвращаемое функцией обратного вызова. Он возвращает объект XHR. Во-вторых, функция get не синхронна, она асинхронна, поэтому showGetResult, скорее всего, вернется до завершения get. В-третьих, вы не можете вернуть что-то из обратного вызова во внешнюю область видимости. Однако вы можете связать переменную во внешней области и установить ее в обратном вызове.
Чтобы получить нужную вам функциональность, вам нужно использовать $ .ajax и установить для параметра async значение false. Затем вы можете определить переменную во внешней области видимости и назначить ее в обратном вызове ajax, возвращая эту переменную из функции.
function showGetResult( name )
{
var result = null;
var scriptUrl = "somefile.php?name=" + name;
$.ajax({
url: scriptUrl,
type: 'get',
dataType: 'html',
async: false,
success: function(data) {
result = data;
}
});
return result;
}
Вам, вероятно, будет лучше служить, хотя,
Похоже, вам нужен синхронный запрос: Как заставить jQuery выполнять синхронный, а не асинхронный запрос Ajax?
Или вы можете передать обратный вызов вашей функции:
function showGetResult (name, callback) {
var scriptURL = "somefile.php?name=" + name;
return $.get(scriptURL, {}, callback);
}
showGetResult("John", function(data){ alert(data); });
Основная ошибка, которую вы делаете, заключается в том, что вызов AJAX выполняется асинхронно, поэтому к тому времени, когда вы вернетесь, результат еще не готов. Чтобы это работало, вы можете изменить свой код следующим образом:
$(function() {
showGetResult('John');
});
function showGetResult (name) {
$.get('somefile.php', {
// Pass the name parameter in the data hash so that it gets properly
// url encoded instead of concatenating it to the url.
name: name
}, function(data) {
alert(data);
});
}
Фундаментальная ошибка - это "асинхронная" часть AJAX. Поскольку вы не знаете, сколько времени потребуется серверу, чтобы отправить ответ, методы AJAX никогда не «блокируются» - то есть вы не вызываете сервер и просто сидите там, ожидая результата. Вместо этого вы переходите к чему-то другому, но вы настраиваете метод, называемый «обратным вызовом», который срабатывает, когда возвращаются результаты. Этот метод отвечает за то, что нужно сделать с данными (например, вставлять их на страницу).
Это неправильный способ. Функция (данные) является функцией обратного вызова, поэтому всякий раз, когда return $ .get будет выполняться .. существует вероятность, что функция обратного вызова не была бы вызвана.
Лучше вызовите функцию получения данных сообщения из метода функции (данных).