Помогите разобрать как работает

NOIP

Гуру форума
Регистрация
17 Фев 2008
Сообщения
327
Реакции
77
Доброго времени суток. есть JS код
Код:
<script type="text/javascript">
/* <![CDATA[ */
var myAjax = {"ajaxurl":"wp-admin\/admin-ajax.php"};
/* ]]> */
</script>
Код:
jQuery(document).ready( function(event) {
   jQuery("#formcalc").submit( function(e) {
      e.preventDefault();
      //alert("00000");
      var form = jQuery(this);
      var msg = form.serialize();           
     
      jQuery.ajax({
         type : "post",
         //dataType : "html",
         url : myAjax.ajaxurl,
         data : { action : "formcalc_count",
                  data   :  msg
         },
         success:function(data){
         //alert(data);   
         jQuery('#countresult').html(data);
          },
         error: function (xhr, ajaxOptions, thrownError){
          alert(xhr.status); // пoкaжeм oтвeт сeрвeрa
          alert(thrownError); // и тeкст oшибки
         }
      })   
   })
})
И HTML

HTML:
<input type="hidden" id="sulfur_nonce_field" name="sulfur_nonce_field" value="0fce899823">
<input type="hidden" name="_wp_http_referer" value="/explosives/">

<form method="post" id="sulfurform" action="/explosives/">
<input type="hidden" id="sulfur_nonce_field" name="sulfur_nonce_field" value="0fce899823">
<input type="hidden" name="_wp_http_referer" value="/explosives/">
<fieldset>
<input name="SurveyCharge" type="number" min="0" max="999" value="0">
<input name="BeancanGrenade" type="number" min="0" max="999" value="0">
<input name="SatchelCharge" type="number" min="0" max="999" value="0">
</fieldset>
<fieldset>
<input name="F1Grenade" type="number" min="0" max="999" value="0">
<input name="TimedExplosiveCharge" type="number" min="0" max="999" value="0">
<input name="Rocket" type="number" min="0" max="999" value="0">
</fieldset>
<p><input type="submit" value="Calculate"><input type="reset" value="Clear"></p>
</form><br>
<div id="countresult"></div>

Помогите разобраться как вернуть нужное значение? Код взят с сайта, сайт не мой. Интересно разобрать как это работает. движок WP, отправляется значение и должен вернутся результат. как получить результат?
 
Данные из формы Для просмотра ссылки Войди или Зарегистрируйся и передаются аяксом на скрипт wp-admin/admin-ajax.php, который чето там делает, и возвращает какое то значение, которое потом записывается в элемент с id="countresult"
 
Данные из формы Для просмотра ссылки Войди или Зарегистрируйся и передаются аяксом на скрипт wp-admin/admin-ajax.php, который чето там делает, и возвращает какое то значение, которое потом записывается в элемент с id="countresult"
Ну это понятно, возвращается список, а можете помочь перепилить форуму что бы она работала?
 
Прежде всего нужно написать обработчик ajax Запроса. В WP это можно сделать при помощи плагина, пишется ручками.
Код:
 data : { action : "formcalc_count",
                  data   :  msg
         },
В этом примере данные в контейнере msg отправляются на обработчик "formcalc_count".

Обработичик можно реализовать на основе самописного плагина к worpress

Код:
<?php
add_action( 'wp_ajax_formcalc_count', 'my_action_callback' );  // обработчик для зарегестрированных пользователей
add_action( 'wp_ajax_nopriv_formcalc_count', 'my_action_callback' ); // обработчик для незарегистрированных пользователй
function my_action_callback() {
    $data = $_POST['data']   // Получаем данные с форми
    // Обработка данных
    wp_die($data_out); // возвращение данных ajax скрипту
}
?>

my_action_callback - это название функции обработчика

документация хттп://codex . wordpress . org/AJAX_in_Plugins
 
Прежде всего нужно написать обработчик ajax Запроса. В WP это можно сделать при помощи плагина, пишется ручками.
Код:
 data : { action : "formcalc_count",
                  data   :  msg
         },
В этом примере данные в контейнере msg отправляются на обработчик "formcalc_count".

Обработичик можно реализовать на основе самописного плагина к worpress

Код:
<?php
add_action( 'wp_ajax_formcalc_count', 'my_action_callback' );  // обработчик для зарегестрированных пользователей
add_action( 'wp_ajax_nopriv_formcalc_count', 'my_action_callback' ); // обработчик для незарегистрированных пользователй
function my_action_callback() {
    $data = $_POST['data']   // Получаем данные с форми
    // Обработка данных
    wp_die($data_out); // возвращение данных ajax скрипту
}
?>

my_action_callback - это название функции обработчика

документация хттп://codex . wordpress . org/AJAX_in_Plugins
А как просто не используя примудрости ВП?
 
Код:
jQuery(document).ready( function(event) {
   jQuery("#formcalc").submit( function(e) {
      e.preventDefault();
      //alert("00000");
      var form = jQuery(this);
      var msg = form.serialize();          
    
      jQuery.ajax({
         type : "post",
         //dataType : "html",
         dataType: 'json'
         url : 'http://my-site.ru/calculator/calc.php',    // вот тут указывает URL скрипта например 'http://my-site.ru/calculator/calc.php'
         data : { action : "formcalc_count",     // 'action : "formcalc_count",' - это можно убрать
                  data   :  msg
         },
         success:function(data){
         //alert(data);  
         jQuery('#countresult').html(data);
          },
         error: function (xhr, ajaxOptions, thrownError){
          alert(xhr.status); // пoкaжeм oтвeт сeрвeрa
          alert(thrownError); // и тeкст oшибки
         }
      })  
   })
})

Советую скрипт php для расчетов выносить за пределы корневых директорий wordpress.
Собственно создаете файл типа:
Код:
<?php
$data = $_POST['data'];

Обработка

die(json_encode($dataout));
?>
 
Последнее редактирование:
Код:
jQuery(document).ready( function(event) {
   jQuery("#formcalc").submit( function(e) {
      e.preventDefault();
      //alert("00000");
      var form = jQuery(this);
      var msg = form.serialize();         
   
      jQuery.ajax({
         type : "post",
         //dataType : "html",
         dataType: 'json'
         url : 'http://my-site.ru/calculator/calc.php',    // вот тут указывает URL скрипта например 'http://my-site.ru/calculator/calc.php'
         data : { action : "formcalc_count",     // 'action : "formcalc_count",' - это можно убрать
                  data   :  msg
         },
         success:function(data){
         //alert(data); 
         jQuery('#countresult').html(data);
          },
         error: function (xhr, ajaxOptions, thrownError){
          alert(xhr.status); // пoкaжeм oтвeт сeрвeрa
          alert(thrownError); // и тeкст oшибки
         }
      }) 
   })
})

Советую скрипт php для расчетов выносить за пределы корневых директорий wordpress.
Собственно создаете файл типа:
Код:
<?php
$data = $_POST['data'];

Обработка

die(json_encode($dataout));
?>
Не работает, просто переадрисовывает на страницу
 
Покажите ссылку на сайт с которого вы выудили этот скрипт
 
  • Нравится
Реакции: NOIP
Назад
Сверху