2012-02-17 2 views

ответ

4

Результат не будет доступен сразу, так что вы должны структурировать свой код немного по-другому:

function nameToCode(nameGroup, callback) { 
    $.post("execute.php", { something: sendSomething }, function(data) { 
      callback(data); 
    }); 
} 

nameToCode("some text", function(variable) 
{ 
    /* use variable here */ 
}); 
-1

Вы не можете получить обратный вызов, как это. Существует асинхронная проблема. Вы можете использовать .ajax вместо .post;

function nameToCode(nameGroup, callback) { 
    $.ajax({ 
    url: 'execute.php', 
    type: 'POST', 
    aysnc:false, 
    data: 'something=sendSomething', 
    success: function(data) { 
     return data; 
    } 
}); 

это будет работать.

Вы имеете в виду, что это не работает или вам не нравится решение?

Это о рабочем процессе javascript. js не ждет никакой синхронизации. вы можете выполнить свою работу в функциональном блоке успеха или использовать параметр async: false. Я предложил сделать все, что вы хотите в функциональном блоке успеха. Если вы используете aysnc: false, он заблокирует ваш браузер на короткое время.

1

Четвертый параметр для $.post - это dataType. Вы можете установить это для JSON, чтобы ваши возвращаемые данные обрабатывались в объект или массив JavaScript.

$.post(
    "execute.php", 
    { something: sendSomething }, 
    function(data){ return data; }, 
    'json'); 

В файле execute.php, вы можете сделать что-то вроде

<?php 
$return_data=array('nameToCode'=>'some text'); 

header('Content-Type: application/json'); 
echo json_encode($return_data); 
exit(); 
Смежные вопросы