0

我有一个文件列表和一个下拉框,我希望用户能够按各种类别等过滤它们。

我有一个 php 类,它具有创建 sql 查询并返回结果的功能。我非常想通过 ajax 来防止刷新。

我被困住了,希望能得到一些帮助。

问题是我不知道下一步该做什么。这对我来说很新,但仍然很陌生。如果可以从选择中运行 ajax 调用 onKeyUp 那就更好了。

感谢您的任何帮助:

的HTML:

<div>
  <form action="" method="post" name="orderBy">
    <label for="orderBy" id="orderBy">Order By:</label>
    <select>
      <option class="orderByOption" value="newest">Newest First</option>
      <option class="orderByOption" value="oldest">Oldest First</option>
      <option class="orderByOption" value="cat">Category</option>
      <option class="orderByOption" value="alpha">Aphabetical</option>
      <option class="orderByOption" value="fileType">Filetype</option>
    </select>
    <label> &nbsp; </label>
    <input type="submit" class="orderByTrainingButton" name="submit" value="Go!"/>
  </form>
</div>

阿贾克斯:

//form for changing the ordering of items in training all docs
$(function(){
    $(".orderByTrainingButton").click(function(){
        //validate and process
        //get vlaue
        var option = $(".orderByOption").val();


        var params = {option: option};

        $.ajax({

            type: "POST",
            url: "../trainingOrderByAjax.php",
            data: params,
            dataType: 'json',

            success: function(data){

                if(data.success == true){
                    //aaaannnd. stuck/
                }else{
                    // shouldn't ge there...I hope.

                }

            },
            error: function( error ) {
                console.log(error);
            }
        });
    });
});

ajax 将调用的 php:

<?php

include_once('core/init.php');

if($_POST){
  $orderBy = $_POST['orderByOption'];

  if($training->getAlFilesOrderBy($orderBy)){
    $data['success'] = true;
  }else{
    $data['success'] = false;
  }
  echo json_encode($data);
}

首先按 desc 或 asc 排序会很棒。然后我可以在此基础上再接再厉。

4

1 回答 1

0

像这样的东西。

PHP:

if($results = $training->getAlFilesOrderBy($orderBy)){
    $data['success'] = true;
    $data['results'] = $results;
}else{
    $data['success'] = false;
}
echo json_encode($data);
}

JS:

    if(data.success){
        var results = data.results;
        for (var i = 0; i < results.length; i++) {
            // do something with results[i]
        }
    }else{
        // shouldn't ge there...I hope.
    }

将您的 AJAX 错误处理程序更改为:

error: function(xhr, status, errorMsg) {
    console.log("AJAX error: " + errorMsg);
}
于 2013-07-26T22:10:23.237 回答