根据第一个ajax的结果触发第二个ajax

时间:2015-04-23 12:14:11

标签: php ajax wordpress forms

我在WordPress工作。

我在下面的表单1是一个搜索表单,当我按下搜索时,我会用AJAX获得结果。

现在结果行有一个按钮或链接,当点击它时,应该触发另一个AJAX调用,并且应该输入第一个表单的post值。

因此,涉及两种形式,第二种形式从前一种形式获取输入,在点击第一次形式搜索结果中的链接时,应触发第二个ajax过程。

第二个ajax不起作用,只刷新页面。

下面是我的第一个搜索表单的html代码和AJAX以及第二个表单的其他代码,这些代码是在第一个表单的搜索结果中按下链接时触发的。

第一种形式

<form id="mydispimage" action="" method="post">
<select name="category" id="category" style="width:250px; background-color:lightgrey;">
<option value="" disabled="disabled" selected="selected" ">Select category</option>
<option value="Cutie Pie">Cutie Pie</option>
<option value="Chubby">Chubby</option>
<option value="Dimples">Dimples</option>
</select>
<input type="submit" id="displayimage" name="displayimage" value="Search"  style="margin-left:15px; margin-bottom:15px;">
</form>
<div id="myresult" style="margin-bottom:15px; position:relative;"></div>

第二种形式,这是第一种形式的ajax函数的结果,与JSON一起传递(它有一个名为 votes 的按钮,当点击时我想要另一个要调用的ajax函数,允许用户为该行投票)。

当我按下投票时,不会返回任何内容。

$results = $wpdb->get_results($wpdb->prepare($sql)) or die(mysql_error());

if (is_array($results) && count($results) > 0) {
    $form = "";
    foreach($results as $result) {
        $form.= '<form id="voteform" action="" method="post">';
        $form.= "<input name='category' type='hidden' value='$result->category'>";
        $form.= "<img src='$result->path' width='150' height='150' >" . '<br /><br />';
        $form.= "<input name='id' type='hidden' value='$result->uid'>";
        $form.= "<input name='comp' type='hidden' value='$result->competition'>";
        $form.= $result->username . '<br />';
        $form.= $result->votessum . '<br />';
        $form.= "<input style='margin-bottom:30px;' value='vote' name='submit' type='submit'/></form>";
    } //end of foreach
    $response['form'] = $form;
}

echo json_encode($response);
die();

投票功能

// register & enqueue a javascript file called globals.js
wp_register_script( 'votess', get_stylesheet_directory_uri() . "/js/ajaxinsert.js", array( 'jquery' ) ); 
wp_enqueue_script( 'votess' );

// use wp_localize_script to pass PHP variables into javascript
wp_localize_script( 'votess', 'yes', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
}

function votes()
{
    echo json_encode("pakistan zindabad");
    die();
    $ccc = $_POST['comp'];
    $cat = $_POST['category'];
    global $wpdb;
    $compp = $wpdb->get_var("SELECT competition FROM competition ORDER BY cid DESC LIMIT 1");
    $userid = $_POST['id'];
    $myvote = 1;
    if ($wpdb->insert('zvotes', array(
        'zvotes' => $myvote,
        'zcompetition' => $compp,
        'aid' => $userid
    )) == false) {
        wp_die(json_encode('Database Insertion failed'));
        die();
    }
    else {
        echo json_encode('your vote was successfully recorded');
        die();
    }
}

1 个答案:

答案 0 :(得分:0)

好的,首先如果你使用Ajax技术,你需要其他类型的&#34;发送&#34;按钮,即不是提交类型(这将刷新您的页面)。第二,如果你想触发几个Ajax请求,它们都应该在同一个页面上,即第二个ajax请求将在第一个ajax请求的成功函数中工作。如果你想将数据作为json返回,最后不要忘记放置适当的标题。