вызвать функцию PHP из JQuery - PullRequest
1 голос
/ 02 июня 2011

Я пытаюсь найти лучший способ сделать это ... Я использую JQuery для отправки данных в функцию PHP, которая отправляет данные из БД в виде JSON, который работает.Дело в том, что в случае успеха я хочу, чтобы JQuery выполнил функцию PHP ... и я бы предпочел не делать еще один вызов AJAX поверх первого успеха AJAX - тем более, что функция php - это то, что яуже используется в другом месте на моей странице.Это мой код:

JQUERY:

$.ajax({
    type: "POST",
    url: post_url,
    success: function(group) //we're calling the response json array 'tree'
    {
        //WANT TO CALL THE PHP FUNCTION HERE
    } //end success
 }); //end AJAX

PHP:

<?php
foreach($groups as $group){
    echo '<option value="' . $group->id . '">' . $group->group_name . '</option>';
}
?>

Ответы [ 4 ]

3 голосов
/ 02 июня 2011

В вашем php-скрипте, который строит ваш ответ, просто добавьте к вашему объекту дополнительное свойство, которое представляет собой строку html, которую вы хотите поместить на свою страницу, и затем поместите javascript туда, куда нужно.У вас нет выбора, кроме как запускать функции php на сервере.

1 голос
/ 02 июня 2011

Если вы хотите вызвать функцию php из вашего javascript, вам нужно будет выполнить AJAX-запрос к функции, в своем собственном файле, на сервере. Это связано с тем, что JavaScript выполняет клиентскую часть, а PHP - серверную. Поэтому javascript не имеет прямого доступа к функциям PHP.

Вы можете использовать свой PHP для написания JavaScript, или вы можете вызвать php-файл из JavaScript через AJAX.

Можете ли вы повторить функциональность функции PHP с помощью функции JavaScript?

Будет ли это или что-то подобное работать для вас:

$.ajax({
  type: "POST",
  url: post_url,
  success: function(groups) //we're calling the response json array 'tree'
  {
        for(group in groups){
            document.writeln("<option value='"+groups[group].id+"'>"+groups[group].group_name+"</option>";
        }
  }
}); //end AJAX
0 голосов
/ 02 июня 2011

Альтернативы:

  1. Измените PHP, который поддерживает исходный вызов AJAX, чтобы вместо отправки JSON он отправлял обратно HTML именно так, как вы этого хотите.
  2. Цепочка второго вызова AJAX «внутри» успеха первого, так что для преобразования JSON-> HTML выполняется вторая передача данных на сервер.
  3. Примите, что иногда вам нужно «продублировать» правила представления, когда вы работаете с несколькими языками, и использовать что-то вроде EJS , чтобы делать то же самое <option>, что и PHP в других местах.
0 голосов
/ 02 июня 2011

Вы должны знать, что здесь вы имеете дело с двумя парадигмами: первая - логика на стороне сервера (PHP), а вторая - логика на стороне клиента (JavaScript).

К сожалению, невозможно вызвать PHP из JS с клиента без выполнения вызова AJAX и рендеринга контента, который вы хотите показать.Тем не менее, вы можете подготовить результат и установить тело ответа AJAX с запрошенной строкой HTML.

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

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