Как передать данные формы из JavaScript в PHP и обратно? - PullRequest
3 голосов
/ 21 апреля 2011

У меня есть кнопка, подобная этой:

<a href="#" onclick="do_something()">Click Me</a>

И поле изображения, подобное этому (или вставка YouTube, или что-то, где необходимо изменить значение):

<img src="<?php get_src(); ?>" />

Когда пользователь нажимает кнопку, do_something() необходимо отправить данные из файла PHP, который обрабатывает массив (в данном случае JSON, но это не имеет значения) и отправляет обратно следующее значение.

По сути,когда вы открываете страницу, get_src() содержит первый элемент массива, и нажатие do_something() отправляет информацию в форму PHP для получения другого элемента в массиве, который, в свою очередь, отправляет данные обратно в файл и обновляет get_src().

Есть ли у меня что-то концептуально неправильное?Я действительно не знаю, так ли это работает.

Ответы [ 3 ]

3 голосов
/ 21 апреля 2011

Используя jQuery, вы можете привязать запись Ajax к файлу PHP следующим образом:

$('#myLink').click(function() {
    var myData = 'myData';

    /* post JSON */ 
      $.post('myAjax.php', {data: myData},
            /* Callback function */                      
            function(data){
            }
      , 
      'json');  

});

В myAjax.php вы можете получить что-то вроде:

$myData = $_POST['data'];
// do something with data
echo json_encode($jsonResult);

Когда myAjax.php выдает ответ, срабатывает функция обратного вызова jQuery, где вы можете выполнить некоторое выполнение.

3 голосов
/ 21 апреля 2011

Длинный ответ: используйте AJAX ( учебник здесь )

1 голос
/ 21 апреля 2011

Используйте AJAX, как предположил kpower. Или, что еще лучше, попробуйте JQuery Ajax , хотя позже он в основном обеспечивает простой и увлекательный способ выполнения вызовов ajax.

Здесь - хороший учебник с сайта pointpoint по jquery ajax.

Редактировать

На стороне сервера, чтобы вернуть некоторые данные в вызывающий метод AJAX, вы можете использовать функцию json_encode . Он генерирует строку из ваших данных в формате JSON. Затем вы можете просто echo эту строку передать ее функции обратного вызова ajax.

Помните, что возвращать данные в ответ на ajax - это все равно, что печатать данные на веб-странице с использованием PHP, вам просто нужно echo/print it.

Также будьте осторожны с этими сценариями -

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>First Tag library Example - EL Function</title>
</head>
<body>
<?php echo $your_json_response_string; ?>

</body>
</html>

Если вы отобразите строку, как указано выше, весь контент, включая все теги HTML и другие, будет отправлен в ответ на вызов ajax. Если вам просто нужно передать некоторые данные, скажем, некоторые суммы транзакций из базы данных на основе какого-либо запроса, сделайте это вместо -

<?php
    // do your processing, but print/echo nothing
    ..........
    // Convert your result into a json_string
    ..........

    echo $your_json_response_string;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...