2015-05-24 3 views
0

Я не уверен, что это лучший подход, но как сделать вызов AJAX с включенным файлом? Позвольте мне сделать простой пример.Как позвонить в php-файл с AJAX?

У меня есть основной файл index.php со следующим содержимым, где я хочу получить доступ ко всем данным, возвращаемым из включенного файла, где происходит магия. Данные представляют собой тип массива в действительности.

<?php 
require_once('magic.php'); 
?> 
<html> 
<body> 
<form action="<?=$_SERVER['PHP_SELF'];?>" method="POST"> 
    <input type="text" name="variable" id="variable" /> 
    <input type="submit" value="Do magic" name="submit" /> 
</form> 
<?php 
    echo "<pre>"; 
    print_r($data); 
    echo "</pre>"; 
?> 
</body> 
</html> 

И файл "magic.php", где происходит вся магия.

<?php 
$variable = $_POST['variable']; 
function doMagic($variable) { 
    # do some magic with passed variable ... 
    # and return data 
    return $data; 
} 
$data = doMagic($variable); 
# now return $data variable so main file can use it 
return $data; 
?> 

То, что я хочу сделать, это вызвать эту функцию doMagic() с помощью AJAX, но вся логика уже включена и доступна в глобальном пространстве и вернуть $ данные модальным или всплывающее окно.

Что лучше всего подходит, потому что я уже передаю переменную в файл?

ответ

1

Используйте ajax как следующий

$('form').submit(function(){ 
    $.ajax({url: "magic.php", 
    data: {variable : $'#variable').val()}, 
    success:function(data){console.log(data);}); 
}); 

и в magic.php, используйте json_encode

<?php 
$variable = $_POST['variable']; 
function doMagic($variable) { 
    # do some magic with passed variable ... 
    # and return data 
    return $data; 
} 
$data = doMagic($variable); 
# now return $data variable so main file can use it 
return json_encode($data); 
?> 
+0

чем в этом случае я не должен включать файл magic.php, потому что я буду проходить и получать данные с помощью AJAX? Только причина включения magic.php в index.php состоит в том, чтобы сделать глобально доступными функции index.php и отправить форму без перенаправления на страницу действия (magic.php). –

+0

@AlanKis, точно, вам не нужно вставлять magic.php в первый файл, если вы не используете переменные/функции из этого файла. Что касается отправки без перенаправления, это другая история, вам нужно вернуть false в onsubmit. Дайте мне знать, если вам понадобится помощь – AmmarCSE

+0

JS меня немного смущает, но на данный момент. Действие формы теперь «

« Я добавил return false в конце submit(), но он все же перенаправляет меня в пустой файл magic.php. Я постараюсь кое-что притвориться. –

1

Поскольку у вас есть jQuery как тег ...

Вы могли бы сделать что-то вроде этого:

В вашей index.php:

<input type="text" id="variable"> 
<div id="#myButton"></div> 
<div id="#response"></div> 

Тогда есть файл JavaScript (или включить в index.php):

$('#myButton').click(function(){ 
    var myVariable = $('#variable').val(); 
    $.post("magic.php",{variable: myVariable}, function(data) { 
     $("#response").html(data); 
    }); 
}); 

В основном это означает, что когда вы щелкните элемент, который имеет идентификатор myButton, он 'll захватить значение того, что находится внутри входа с идентификатором variable, POST, который через jQuery.post() в ваш файл magic.php и вернуть данные. Затем он заменяет html div идентификатором response с возвращаемыми данными.

Просто убедитесь, что включить jQuery library

Смежные вопросы