我知道这个问题被问了很多次,但我尝试了所有的方法,仍然很难找出为什么它不起作用。。。
因此,我有以下表格(尚未定稿):
<form id="doctor_search" >
<h1>Doctor search</h1>
<fieldset>
<legend>Fill at least 1 of the following fields</legend>
<label for="name" name="fn">First name:</label>
<input type="text" id="name" name="first_name">
<label for="name">Last name:</label>
<input type="text" id="lname" name="last_name">
<label>Gender:</label>
<input type="radio" id="fem" value="fem" name="doc_gen"><label for="fem" class="light">Female</label><br>
<input type="radio" id="male" value="male" name="doc_gen"><label for="male" class="light">Male</label>
</fieldset>
<fieldset>
<label for="job">Specialization:</label>
<select id="job" name="user_job">
<option value="frontend_developer">Pediatry</option>
<option value="php_developor">General medicine</option>
<option value="python_developer">Cardiology</option>
<option value="rails_developer"> Geniology</option>
<option value="web_designer">Endocrinology</option>
</select>
<label>Interests:</label>
<input type="checkbox" id="development" value="interest_development" name="user_interest"><label class="light" for="development">...</label><br>
<input type="checkbox" id="design" value="interest_design" name="user_interest"><label class="light" for="design">...</label><br>
<input type="checkbox" id="business" value="interest_business" name="user_interest"><label class="light" for="business">...</label>
</fieldset>
<button type="submit" id="search-submit">Sign Up</button>
</form>
我遵循以下教程:
https://www.youtube.com/watch?v=f7ID_L91lIk&t=245s 但它并没有真正发挥预期的作用。
我有以下按钮事件侦听器:
userSubmitButton.addEventListener( \'click\', function(event) {
event.preventDefault();
var gen;
if(document.getElementById(\'fem\').checked) gen = true;
else if(document.getElementById(\'male\').checked) gen = false;
else gen = null;
var formData = {
\'gender\' : gen
};
adminAjaxRequest( formData, \'doctor_search_process\' );
} );
目前我只使用了一个属性,即性别。我的ajax请求如下:
var adminAjaxRequest = function( formData, action ) {
$.ajax({
type: \'POST\',
dataType: \'json\',
url: SliderData.adminAjax,
data: {
action: action,
data: formData
//submission: document.getElementById( \'xyq\').value,
//security: screenReaderText.security
},
success: function(response) {
if ( true === response.success ) {
alert( \'this was a success\' );
} else {
alert( \'You Suck\' );
}
}
});
};
滑块数据。adminAjax基本上是adminAjax的url。php。从这里,我在函数中添加操作。php
function doctor_search_process() {
$g = $_POST[ \'data\' ][ \'gender\' ];
}
add_action( \'wp_ajax_doctor_search_process\', \'doctor_search_process\' );
add_action( \'wp_ajax_nopriv_doctor_search_process\', \'doctor_search_process\');
问题是ajax进程总是失败。。。最重要的是,我需要列出带有女性或男性标签的帖子。据我所知,这只能在页面/模板php文件中完成。即使成功了,我也不知道如何将其传递到php页面。。。有人能帮我吗?为什么我的ajax总是失败?我的网页是
http://medclinic.x10host.com/sample-page/
最合适的回答,由SO网友:scott 整理而成
看起来你已经阅读了WP Codex,所以你基本上已经把事情安排好了。我有几点建议:
Make sure the URL var is correct
您正在使用
sliderData.adminAjax
指向AJAX URL。我总是能够简单地使用
ajaxurl
因为WP为我定义了它。我会做出改变,以确保你击中了正确的目标。(您的
sliderData
对象不在范围内,或者成员变量未正确设置。)
Fix PHP file
在函数中
doctor_search_process()
, 您尝试访问POST变量,就像它是二维数组一样。我从未见过这样的例子。直接访问我想要的POST var对我来说一直都很有效。我想你应该试试:
$g = $_POST[ \'gender\' ];
但你应该回过头来。
function doctor_search_process() {
$g = $_POST[ \'gender\' ];
echo $g;
wp_die();
}
我在这个论坛上读到,如果PHP文件没有“die()”,那么AJAX将不会完成进程。
Improve javascript
我非常喜欢将AJAX操作传递到启动AJAX的javascript函数的方式。然而,您似乎没有正确地结束AJAX调用。在您的
success
功能,您正在捕捉成功和失败。通常,故障由其自身的功能捕获。此外,成功函数总是排在第一位,因此它不必明确。这对我来说很有用:
$.post(
data: {
action: action,
data: formData
},
function( content ) {
alert( content );
} ).fail( function( ) {
alert( "you suck" );
});