将表单属性传递给WordPress中的另一个php模板

时间:2017-05-01 作者:Olga

我知道这个问题被问了很多次,但我尝试了所有的方法,仍然很难找出为什么它不起作用。。。

因此,我有以下表格(尚未定稿):

<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/

1 个回复
最合适的回答,由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" );
});

相关推荐

从<?php_head();?>中删除css&js

我已经处理这个问题好几天了,事实是我找不到解决办法。我已经在wp头中手动添加了代码。现在我需要删除它自动生成的这些行我要消除的行包括:<link rel=\"stylesheet\" id=\"create-css\" href=\"http://www.myweb.com/wp-content/themes/movil/create.css?ver=4.9.8\" type=\"text/css\" media=\"all\" data-inprogress=\"\"> &