Если вы выполняете команды оболочки, и у вас (как у I) есть фетиш для конвейерной обработки, это хорошо:
seq 1 $END | xargs -I {} echo {}
Вы пропускаете запятую после
'data': { 'request': "", 'target': 'arrange_url', 'method': 'method_target' }
Кроме того, если вы хотите, чтобы return_first
содержал результат вашей анонимной функции, вам необходимо вызвать функцию:
var return_first = function () {
var tmp = null;
$.ajax({
'async': false,
'type': "POST",
'global': false,
'dataType': 'html',
'url': "ajax.php?first",
'data': { 'request': "", 'target': 'arrange_url', 'method': 'method_target' },
'success': function (data) {
tmp = data;
}
});
return tmp;
}();
Примечание ()
в конце.
Это все, что вам нужно сделать:
var myVariable;
$.ajax({
'async': false,
'type': "POST",
'global': false,
'dataType': 'html',
'url': "ajax.php?first",
'data': { 'request': "", 'target': 'arrange_url', 'method': 'method_target' },
'success': function (data) {
myVariable = data;
}
});
ПРИМЕЧАНИЕ: Использование «асинхронного» не рекомендуется. См. https://xhr.spec.whatwg.org/ .
Использование 'async': false для предотвращения асинхронного кода является плохой практикой,
Синхронный XMLHttpRequest в основном потоке устарел из-за его пагубных последствий для конечного пользователя опыт. https://xhr.spec.whatwg.org/
При установке асинхронного режима на поверхность для решения многих проблем, поскольку, как показывают другие ответы, вы получаете данные в переменную. Однако, ожидая возвращения данных поста (что в некоторых случаях может занять несколько секунд из-за вызовов базы данных, медленных подключений и т. Д.), Остальные функции Javascript (такие как инициируемые события, обработанные кнопки Javascript, переходы JQuery (например, аккордеон или автозаполнение (JQuery UI)) не сможет появиться во время ожидания ответа (что очень плохо, если ответ никогда не возвращается, так как ваш сайт теперь по существу заморожен).
Попробуйте вместо этого:
var return_first;
function callback(response) {
return_first = response;
//use return_first variable here
}
$.ajax({
'type': "POST",
'global': false,
'dataType': 'html',
'url': "ajax.php?first",
'data': { 'request': "", 'target': arrange_url, 'method': method_target },
'success': function(data){
callback(data);
},
});
'async': false
говорит, что это обесценилось. Я заметил, что если я запускаю console.log('test1');
при успешном выполнении ajax, то console.log('test2');
в обычном js после функции ajax, test2
печатает до test1
, поэтому проблема в том, что вызов ajax имеет небольшую задержку, но не останавливается остальная часть функции, чтобы получить результаты. Переменная просто не была установлена "пока", поэтому вам нужно отложить следующую функцию.
function runPHP(){
var input = document.getElementById("input1");
var result = 'failed to run php';
$.ajax({ url: '/test.php',
type: 'POST',
data: {action: 'test'},
success: function(data) {
result = data;
}
});
setTimeout(function(){
console.log(result);
}, 1000);
}
на test.php (если вам нужно протестировать эту функцию)
function test(){
print 'ran php';
}
if(isset( 'async': false
говорит, что это обесценилось. Я заметил, что если я запускаю console.log('test1');
при успешном выполнении ajax, то console.log('test2');
в обычном js после функции ajax, test2
печатает до test1
, поэтому проблема в том, что вызов ajax имеет небольшую задержку, но не останавливается остальная часть функции, чтобы получить результаты. Переменная просто не была установлена "пока", поэтому вам нужно отложить следующую функцию.
[110] на test.php (если вам нужно протестировать эту функцию)
[111]POST['action']) && !empty( 'async': false
говорит, что это обесценилось. Я заметил, что если я запускаю console.log('test1');
при успешном выполнении ajax, то console.log('test2');
в обычном js после функции ajax, test2
печатает до test1
, поэтому проблема в том, что вызов ajax имеет небольшую задержку, но не останавливается остальная часть функции, чтобы получить результаты. Переменная просто не была установлена "пока", поэтому вам нужно отложить следующую функцию.
[110] на test.php (если вам нужно протестировать эту функцию)
[111]POST['action'])) {
$action = htmlentities( 'async': false
говорит, что это обесценилось. Я заметил, что если я запускаю console.log('test1');
при успешном выполнении ajax, то console.log('test2');
в обычном js после функции ajax, test2
печатает до test1
, поэтому проблема в том, что вызов ajax имеет небольшую задержку, но не останавливается остальная часть функции, чтобы получить результаты. Переменная просто не была установлена "пока", поэтому вам нужно отложить следующую функцию.
[110] на test.php (если вам нужно протестировать эту функцию)
[111]POST['action']);
switch($action) {
case 'test' : test();break;
}
}