simple jquery.ajax返回undefined
我知道这些到处都是,但我似乎无法在代码中看到错误。 我正在使用数据类型json进行简单的ajax调用。 此调用似乎成功但不返回任何内容,并且警报打印undefined
。
JavaScript的:
jQuery(document).ready(function() { if(jQuery('#statesel').length) { var dataString; dataString = "nonce=" + dynoselect.post_dyno_select_nonce; jQuery.ajax({ type: "POST", url: dynoselect.ajaxurl, dataType: "json", data: dataString, success: function(result) { alert(result.status); } }); } }
PHP:
admin_url('admin-ajax.php'), 'post_dyno_select_nonce' => wp_create_nonce('dyno_select_nonce'))); wp_enqueue_script('jquery'); wp_enqueue_script('dyno_select_script'); } function dyno_select() { $nonce = $_POST['nonce']; //checking token, looking for funny business if (!wp_verify_nonce( $nonce, 'dyno_select_nonce')) { $result['status'] = 'nonce failed'; $result = json_encode($result); echo $result; die(); } $result['status'] = 'success'; echo json_encode($result); die(); } ?>
就像注意这是用Wordpress完成的,因此是init
函数。 我以为我会保持这个目标。
jQuery.ajax
有3个success
回调参数。 第一个是具有指定类型的数据(在您的示例中为JSON)。 所以它没有状态属性。
此外,当您获得成功警报时,这意味着Content-type
已正确设置并且是有效的JSON对象。
尝试使用:
success: function(result, status, XHR) { alert(XHR.status); }
该JSON参数字符串看起来不起作用。 呼叫是否正确发布到服务器?
如果是,请忽略这一点。
如果没有,我建议在调用jQuery.ajax之前包括json2.js( http://www.json.org/js.html )并对你的数据参数进行字符串化:
var jsonData = { param1: 'something', param2: 999 }; var dataString = JSON.stringify(jsonData);
编辑:此接受的SO答案中的示例不进行字符串化,但它确实构造并传递了有效的JSON对象。 并显示服务器端解析。
问题是POST没有通过“动作”和ajax调用。 一旦“动作”添加到url,一切都有效。