为什么我的ajax请求得到响应0?
我在我的wp主题中设置了基本的wordpress ajax示例。 触发器由modernizr.js检查页面上的媒体查询。
jQuery(document).ready(function($) { if(Modernizr.mq('only all and (max-width:6300px)')) { var data = { action: 'my_action', whatever: ajax_object.we_value // We pass php values differently! }; // We can also pass the url value separately from ajaxurl for front end AJAX implementations jQuery.post(ajax_object.ajax_url, data, function(data) { $("#trending-Container").html(data).fadeIn(1000); }); } });//end function
我已经对我的脚本进行了本地化和排队。
wp_enqueue_script('mainJS', get_template_directory_uri() . '/js/mainJS.js', array("jquery") ); wp_localize_script( 'mainJS', 'ajax_object', array( 'ajax_url' => admin_url( 'admin-ajax.php' ), 'we_value' => 1234 ) );
最后处理请求的函数是:
add_action('wp_ajax_my_action', 'my_action_callback'); add_action('wp_ajax_nopriv_my_action', 'my_action_callback'); function my_action_callback() { global $wpdb; $whatever = intval( $_POST['whatever'] ); $whatever += 10; echo $whatever; die(); }
这不断给我一个0(没有属性)的响应,我不知道为什么。 PS这都是本地的。
Status code 200 Host:lart.co.uk Origin:http://lart.co.uk Referer:http://lart.co.uk/ User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/28.0.1500.71 Chrome/28.0.1500.71 Safari/537.36 X-Requested-With:XMLHttpRequest Form Dataview sourceview URL encoded action:my_action whatever:1234
一切都必须在这里匹配:
PHP
add_action('wp_ajax_ my_action ',' my_action '); add_action('wp_ajax_nopriv_ my_action ',' my_action '); function my_action (){}
JS
var data = { 行动:' my_action ', 无论如何:ajax_object.we_value };
此外,您缺少安全检查并更好地处理响应。
检查这个例子: [1]和[2] 。
添加函数的“exit”结尾如下所示,这将使用ajax请求修复返回0以及WordPress中的响应。
add_action('wp_ajax_nopriv_getStateList', 'getStateList'); add_action('wp_ajax_getStateList', 'getStateList'); function getStateList() { global $wpdb; $countryId = $_POST['countryId']; $results = $wpdb->get_results("SELECT id,name FROM regions where country_id ='".$countryId."' "); echo json_encode(array('status'=>200,'data'=>$results)); exit; }
以下是解决此问题的完整示例:
JavaScript的:
$(document).ready(function() { $("#submit").click(function(e) { var demo = 'demo'; var ajaxurl = ''; data = { action: "data_insert", demo: demo}; $.ajax({ url: ajaxurl, data: data, dataType: 'json', type: 'post', success: function(response) { console.log(response); } }); }); });
PHP:
add_action('wp_ajax_data_insert', 'data_insert'); add_action('wp_ajax_nopriv_data_insert', 'data_insert'); function data_insert() { $data = $_POST['demo']; echo json_encode($data); die(); }
- laravel 5中的ajax post返回错误500(内部服务器错误)
- 我有三个div,如何只在一个特定的div加载数据而不重新加载php-codeigniter中的完整页面?
- Gmail喜欢使用jQuery上传文件
- jQuery承诺提供summernote提示
- 以编程方式查看客户端浏览器是否支持PUT / DELETE方法
- jQuery AJAX和VBscript – 在jQuery AJAX中使用POST时无法获取VBscript变量中的值
- 使用Jquery和AJAX将参数传递给VB.NET webmethod
- 重音字符在PHP中打破了json_encode()
- jQuery $ .ajax和readyStates