Почему плагин ajax-ответ равен -1?

Я не знаю, почему этот ответ мне -1 всегда? Я использую этот код в своем файле плагина. я хочу отклик на тег click p

<?php function myajax(){ ?> <script type="text/javascript"> jQuery(document).ready(function(){ jQuery("#testbutton").click(function(){ jQuery.ajax({ url: "<?php echo admin_url('admin-ajax.php'); ?>", type: 'POST', data: { action: 'stravyfuncajax22' }, dataType: 'html', success: function(response) { alert(response); } }); }); }); </script><?php echo' <p id="testbutton1">click</p>'; } add_shortcode("my_ajax", "myajax"); add_action('wp_ajax_stravyfuncajax22', 'testfunc11'); add_action('wp_ajax_nopriv_stravyfuncajax22', 'testfunc11'); function testfunc11() { echo "2"; die(); } ?> 

EDIT : добавлен тег php …

Solutions Collecting From Web of "Почему плагин ajax-ответ равен -1?"

согласно wordPress jedi, scribu, теперь вы можете вставлять скрипты изнутри обработчика плагинов.

http://scribu.net/wordpress/conditional-script-loading-revisited.html

вы откликались на вещи и в обработке коротких сообщений вы должны вернуться. Я столкнулся с некоторыми проблемами, которые заставили скрипт работать, вернув скрипт, поэтому я переместил его во внешний файл, который определенно работает.

 function myajax(){ wp_enqueue_script('my-script', plugins_url('my-script.js', __FILE__), array('jquery'), '1.0', true); $data = array( 'ajaxurl' => admin_url('admin-ajax.php') ); wp_localize_script( 'my-script', 'myscriptL10n', $data ); $text = '<a id="testbutton">click</a>'; return $text; } add_shortcode("my_ajax", "myajax"); add_action('wp_ajax_stravyfuncajax22', 'testfunc11'); add_action('wp_ajax_nopriv_stravyfuncajax22', 'testfunc11'); function testfunc11() { echo "2"; die(); } 

а затем my-script.js

 jQuery(document).ready(function($){ $("#testbutton").click(function(){ $.ajax({ url: myscriptL10n.ajaxurl, type: 'POST', data: { action: 'stravyfuncajax22' }, dataType: 'html', success: function(response) { alert(response); } }); }); }); 

надеюсь, это поможет.

EDIT 1 я не тестировал эту часть, но я думаю, что она должна работать для отражения значения формы как ответа ajax.

`function myajax () {

  wp_enqueue_script('my-script', plugins_url('my-script.js', __FILE__), array('jquery'), '1.0', true); $data = array( 'ajaxurl' => admin_url('admin-ajax.php') ); wp_localize_script( 'my-script', 'myscriptL10n', $data ); ob_start(); ?> <form id="form"> <input type="text" name="foo" value="bar"/> <a id="testbutton">click</a>'; </form> <?php $text = ob_get_contents(); return $text; } add_shortcode("my_ajax", "myajax"); add_action('wp_ajax_stravyfuncajax22', 'testfunc11'); add_action('wp_ajax_nopriv_stravyfuncajax22', 'testfunc11'); function testfunc11() { $data = $_POST['data']; echo $data['foo']; die(); } 

`

новый javascript

 jQuery(document).ready(function($){ $("#testbutton").click(function(){ data = $('#form').serialize(); $.ajax({ url: myscriptL10n.ajaxurl, type: 'POST', data: { action: 'stravyfuncajax22', data: data }, dataType: 'html', success: function(response) { alert(response); } }); }); }); 

Попробуйте JSON, кодируя ваш ответ, прежде чем повторять его так (не забудьте также заголовок!).

 function testfunc11() { $response = json_encode( array( 'code' => 2 ) ); header( "Content-Type: application/json" ); echo $response; exit; } 

А затем в вашем JS-коде ..

 alert( response.code ); 

И он должен показать вам «2».

Однако я бы не рекомендовал использовать jQuery.ajax , вместо этого я бы рекомендовал использовать этот метод, который (на мой взгляд) намного проще читать и использовать.