according to wordPress jedi, scribu, you can now enqueue scripts from inside the plugin handler.
http://scribu.net/wordpress/conditional-script-loading-revisited.html
you were echoing things and in shortcode handling you have to return. i ran into some issues getting the script to work by returning the script, so i moved it to an external file which definitely works.
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();
}
and then the 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);
}
});
});
});
hope that helps.
EDIT 1
i didn’t test this part ,but i think it should work for echoing a form value as the ajax response.
`
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();
}
`
new 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);
}
});
});
});