为什么javascript在动态调用(Ajax)时会失败?

为什么javascript在动态调用(Ajax)时会失败?,javascript,php,jquery,ajax,sorttable.js,Javascript,Php,Jquery,Ajax,Sorttable.js,我一直是排序表javascript代码的超级粉丝。它在很多层面上都有效 也就是说,我最近遇到了一个问题,试图在通过ajax调用时让排序正常工作。我的主页上有一个div层,我用ajax调用一个动态查询来动态填充页面。我认为这些结果可以使用上面的javascript文件进行排序。然而,事实并非如此,我不明白为什么它不起作用 我已经通过在页面上放置相同的查询并在页面正常加载且sorttable.js工作正常时填充来验证代码在页面上的工作情况 如果有人能告诉我为什么像javascript这样的客户端语言

我一直是排序表javascript代码的超级粉丝。它在很多层面上都有效

也就是说,我最近遇到了一个问题,试图在通过ajax调用时让排序正常工作。我的主页上有一个div层,我用ajax调用一个动态查询来动态填充页面。我认为这些结果可以使用上面的javascript文件进行排序。然而,事实并非如此,我不明白为什么它不起作用

我已经通过在页面上放置相同的查询并在页面正常加载且sorttable.js工作正常时填充来验证代码在页面上的工作情况

如果有人能告诉我为什么像javascript这样的客户端语言在通过ajax调用时无法工作,我将不胜感激。我相信这是应该的,但我很可能搞错了什么

作为参考,这是我的jquery/ajax

        <script type="text/javascript">
                $(document).ready(function(){
                $(".small_radio").click(function() {

                //check radio buildings for selected value
                var radBuild = $('input:radio[name=buildings]:checked').val();

                //check radio daterange for selected value
                var radDate = $('input:radio[name=daterange]:checked').val();

                //create array for multiple possibilites from checkbox users
                var chkUsers = [];
                //loop through checkboxes appending values to array
                $('#checkall :checked').each(function() {
                   chkUsers.push($(this).val());
                 });

                 //send the request
                $.ajax({
                    url: "/inventory/pick-print-results.php",
                    type: "post",
                    data: "buildings=" + radBuild + "&daterange=" + radDate + "&users[]=" + chkUsers,
                    // callback for success
                     success: function(data, textStatus) {
                         $(".loadonly").hide();
                         $(".ajax_stuff").html(data);  //no data here
                          //alert(data); //Data here
                      }, //end success else...
                      //if failsauce throw error
                      error: function() {
                          alert('Not OKay');
                         } //end error failsauce
                      }); //ends .ajax function
                   }); //end #checkall. click function
                }); // ends ready function
            </script>

$(文档).ready(函数(){
$(“.small_radio”)。单击(函数(){
//检查无线电建筑的选定值
var radBuild=$('input:radio[name=buildings]:选中').val();
//检查所选值的radio daterange
var radDate=$('input:radio[name=daterange]:选中').val();
//为复选框用户的多个可能性创建数组
var chkUsers=[];
//循环通过将值附加到数组的复选框
$('#checkall:checked')。每个(函数(){
chkUsers.push($(this.val());
});
//发送请求
$.ajax({
url:“/inventory/pick print results.php”,
类型:“post”,
数据:“建筑物=“+radBuild+”&daterange=“+radDate+”&users[]=”+chkUsers,
//成功的召唤
成功:功能(数据、文本状态){
$(“.loadonly”).hide();
$(“.ajax_stuff”).html(数据);//此处无数据
//警报(数据);//此处有数据
},//以其他方式结束成功。。。
//如果失败,则抛出错误
错误:函数(){
警惕(“不正常”);
}//结束错误失败
});//ends.ajax函数
});//结束#选中全部。单击函数
}); // 结束就绪功能
这是我通过ajax调用的php查询数据

<?php $message.='
            <input type="hidden" value="'.$big_chunk_sql.'" id="displayed_sql" name="displayed_sql">
            <input type="hidden" value="'.$row_count.'" id="amount" name="amount">
             <input type="hidden" value="print" id="print" name="print">
            <table border="0" width="100%" class="sortable">
            <th class="admin">Location</th>
            <th class="admin">Pick For</th>
            <th class="admin">Requested Date</th>
            <th class="admin">Part Number</th>
            <th class="admin">Quantity</th>
            <th class="admin">Received Date</th>
            <th class="admin">Action</th>';
            while($data=mysql_fetch_array($big_chunk_query)) {

                //Deal with operator Name Don Ford = D Ford
                list($user_first,$user_last)=explode(' ',$data['description']);
                $user_first=strtoupper(substr($user_first,0,1));
                $user_last=ucfirst($user_last);
                $operator_name=$user_first.' ' . $user_last;

               if ($i%2 !=0)
                 $rowColor = 'tr2center';
                  else
                 $rowColor = 'tr1center';
                    $pendingdate= trim($data['received_date']);
                    $newpendingdate = date('m-d-Y',strtotime($pendingdate));
                    $message.= '<tr class="'.$rowColor.'">
                    <td>'. $data['location'].'</td>
                    <td>'.$operator_name.'</td>
                    <td>'.date("m-j-y, g:i a", strtotime($data['date_requested'])) .'</td>
                    <td>'.$data['part_number'] . '</td>
                    <td>'. $data['qty_requested'] . '</td>
                    <td>'. $newpendingdate . '</td><td> 
                    <a href="picking.php?radiopart='.urlencode($data['org_transaction_id']) .'">Mark Picked</a></td></tr>';
                    if($data['notes_to_picker']!='') { 
                    $message.= '<tr class="'.$rowColor.'" align="center"><td colspan="2">&nbsp;</td><td align="right"><b>notes:</b></td><td colspan="4">' . $data['notes_to_picker'].'</td></tr>';
                    }
                    $i++;
                }
                $message.= '</table>';
                echo $message;
    ?>

您正在错误地传递数据。请使用此选项

data: {"buildings":radBuild,"daterange":radDate,"users":JSON.stringify(chkUsers)}

你的案例是插件作者在你所提供的链接中阅读文档时会考虑的“高级”。p>


在成功回调中,需要
sorttable.makeSortable($(“#tableid”)[0])

什么是“不起作用”?它不是在用正确的参数调用php页面吗?php页面是否以某种方式失败?它返回的结果是否不正确?客户端返回后是否出现故障?与Firebug一起花5分钟回答所有这些问题所需的时间比你打印问题所需的时间要短。顺便说一下:嗨,保罗,我说的不工作是指分类表不能排序。(返回有效数据)排序功能通常通过单击标题行单元格对asc/desc进行排序来工作,但在以这种方式调用时将不会工作。谢谢Paul。。我理解这个链接,但通常期望答案的质量与问题的质量相一致。如果是屎,我道歉。导致排序的代码在哪里?到目前为止,您发布的所有内容似乎都是基于您的评论。我的经验是,数据:在没有JSON.stringify调用的情况下处理数组很好。@PaulTomblin
JSON
轻松使用数组服务器端。数据:{“buildings”:radBuild,“daterange”:radDate,“users”:JSON.stringify(chkUsers)}此函数在dreamweaver中显示为无效代码。dreamweaver并不总是正确的,在这种情况下恰好是错误的。无论是哪种情况,从参数字符串更改为对象都不会产生任何影响。谢谢Kevin,我也尝试过运行代码。。它不会返回任何结果。我认为这两种代码风格在句法上存在差异。在我的代码中,前面的每一节都以一个(逗号)结尾,JSON代码打破了这一点。不管怎样,我自己也试着加了个逗号,但没有用。啊的儿子。。谢谢你,凯文。