Wordpress Ajax Data problem

时间:2014-05-21 作者:ilhnctn

我无法使用ajax将所选数据添加到div。这是我的代码:

<?php
function master_ajaxurl() {
        $myOpt = $_POST[\'option\'];
        bringDetails($myOpt);
 }                     

function bringDetails($opt)
{
        global $wpdb;
        $sql ="SELECT * from mst_urun_liste WHERE kod like \'$opt\'";
        $rows = $wpdb->get_row($sql );
        return $rows;
}
add_action(\'wp_ajax_master_ajaxurl\', \'master_ajaxurl\');
add_action(\'wp_ajax_nopriv_master_ajaxurl\', \'master_ajaxurl\');
?>
<script>
$(document).ready(function () {
        var ajaxurl = \'<?php echo admin_url(\'admin-ajax.php\'); ?>\';
    $(\'#combobox\').change(function(){
        $.ajax({
                        url:ajaxurl,
            action:\'master_ajaxurl\',
            type: "post",
            data: {option: $(this).find("option:selected").val()},
            success: function(data){
                //adds the echoed response to our container

                $("#details").html(data);
            }
        });
    });
});

</script>
我有一个selectbox,想更改与所选元素相关的值,但ajax用整个站点的html代码填充了我的div。

here 是我准备的测试页。

我想从选定值的数据库(Kod、Parça No、Parça Adı、Fiyat、Adet、Tutar)中填充值

我意识到,如果我不设置url:ajaxurl,它将返回整个页面,如果我使用它,它将返回0

4 个回复
SO网友:Webloper

    $.post(ajaxurl,{ 
        action:\'master_ajaxurl\',                
        option: $(this).find("option:selected").val(), // use option also here
       },
       function(data){
         //adds the echoed response to our container
        // alert(data);
        $("#details").html(data);
      }
   );
将动作和功能移动到功能中。php文件

按注释进行一些更改

add_action(\'wp_ajax_master_ajaxurl\', \'master_ajaxurl\');
add_action(\'wp_ajax_nopriv_master_ajaxurl\', \'master_ajaxurl\');

    function master_ajaxurl() {

    $myOpt = $_POST[\'option\']; // use option instead of data
    echo bringDetails($myOpt);
    die();
    }                     
<小时>
    
    **page.php**    
    
    $(document).ready(function () {
        var ajaxurl = \'----admin_url----\';
        $(\'#combobox\').click(function(){

            $.post(ajaxurl,{                
                action:\'master_ajaxurl\',
                option: data to send, // key => value
                                option2: \'hello\'
            },
                function(data){
                //adds the echoed response to our container
                alert(data);
                //$("#details").html(data);
            }
        );
        });
    });


    **functions.php**
    function master_ajaxurl() {

    $myOpt = $_POST[\'option\'];
    echo bringDetails($myOpt);
    die();
     } 

must use echo and die() in your ajax output function.
this is working for me. Hope this works now.

SO网友:Hybrid Web Dev

看看脚本本身,似乎所有内容都已正确连接。

查看您的标记,似乎选择菜单的构造不正确,因此脚本没有将任何数据传递回php函数。

得到0的原因是,除非明确退出;或死亡;调用ajax回调后,0将返回到javascript。函数仍在被调用,只是找不到任何要返回的数据。

确保为每个选项指定了一个值,然后表单将接收所需的数据。

建议您将jquery从PHP中取出,并将其移动到自己的单独JS文件中,然后通过WordPress方法进行注册/加密。至于传递数据,例如ajaxurl,您可以使用localize_script 将该数据传递到脚本。更多信息here

根据要求:

<select name="Some_Select_Menu">
<option value="1">I\'m #1 </option>
<option value="2">I\'m #2 </option>
</select>
选择菜单的最小标记。所选值将传递给$_POST[\'Some_Select_Menu\']$_GET 如果方法是get ofc。

我会检查w3valid form markup information

SO网友:Webloper

$result = bringDetails($myOpt);<br>
echo $result;<br>
die();
在你的master_ajaxurl 作用希望对你有帮助!

SO网友:ilhnctn

感谢所有试图帮忙的人,尤其是拉维·库马尔。这可能不是一个有效的方法,但我解决了如下问题。为了帮助某人,或者某人看到并给出更有用的解决方案,我决定回答我的问题

    // Require an action parameter
if ( empty( $_REQUEST[\'action\'] ) ) // normally, there wasn\'t openning/closing curly brackets({}) here, here is inside of admin-ajax.php file
{   $tr = ($_POST[\'option\']);
    $sql ="SELECT * from mst_urun_liste WHERE kod=\'$tr\' " ;
    $value = $wpdb->get_row($sql );
    $tbl1 = "<table border=\'1\'>
    <tr  style=\\"height: 34px;\\">
    <th>Kod</th>
    <th>Parça Ad</th>
    <th>Parça No</th>
    <th>Adet</th>
    <th>Fiyat</th>
    <th>Tutar</th>
    </tr>";

      $tbl2  =  "<tr style=\\"height: 34px !imortant;\\">  
          <td> " . $value->kod      . "</td>  
          <td> " . $value->parca_no . "</td>  
          <td> " . $value->parca_ad . "</td>  
          <td> " . $value->adet . "</td>  
          <td> " . $value->fiyat        . "</td> 
          <td> " . $value->tutar    . "</td>  
          </tr></table>" ;
        $msg = \'<div class="ajax-fiyatlar" id="masterservice-fiyat-ajax">
            <span id="cikan-fiyat"> Çıkan Tutar <span style="font-weight:600; text-decoration:underline;">\' .$value->tutar . \' TL </span>\\\'dir. Devam Etmek istiyorsanız lütfen Formu doldurun.<br /></div>\';
}
 die($tbl1.$tbl2.$msg );

结束

相关推荐

如何安全地编辑函数.php

我想知道如何安全地编辑(比如在实际更新之前查看更改)函数。php。我想知道这是因为不久前我在函数中犯了一个错误。php(一个太多..)这导致wordpress崩溃。值得注意的是,我没有任何ftp访问该网站的权限。。