【问题标题】:Ajax function is not returning any outputAjax 函数不返回任何输出
【发布时间】:2017-08-09 22:51:24
【问题描述】:

我正在使用这个 ajax 函数通过 ajax 获取两个下拉列表的选项,但它没有返回任何输出。 嗨,这是我的 ajax 函数:

 <script>
$('#department').on('change',function(){
    var department = $(this).val();
    var course = $('#course').val();
    if(department){
        $.ajax({
            type:'POST',
            url:'ajaxData.php',
            dataType: 'json',
            cache: false,
            data:{department: department, course: course },
            success: function(data){
                $('#head_name').html(data.head_name);
                $('#email').html(data.email);
            }
        }); 
    }else{
        $('#head_name').html('<option value="">Select Department first</option>'); 
        $('#email').html('<option value="">Select Department first</option>'); 
    }
});
</script>

这是我的查询代码:

if(isset($_POST["department"]) && isset($_POST["course"])){
    //Get all courses data

    $query = $db->query("SELECT head_name, email FROM head WHERE course = '".$_POST['course']."' AND department = '".$_POST['department']."' ");

    //Count total number of rows
    $rowCount = $query->num_rows;

    //Display result list
    if($rowCount > 0){
        while($row = $query->fetch_assoc()){

            $temp = array('head_name' => '<option value="'.$row['head_name'].'">'.$row['head_name'].'</option>', 'email' => '<option value="'.$row['email'].'">'.$row['email'].'</option>' );
            echo json_encode($temp);
        }
    }else{
        $temp = array('head_name' => '<option value="">Not avaialble </option>', 'email' => '<option value="">Not avaialble </option>' );
        echo json_encode($temp);
    }
}

但我没有得到输出结果,我做错了什么?

【问题讨论】:

  • 使用console.log(data)查看返回输出,并在使用返回数据对象之前解析json。
  • 在分配$('#course').val()的结果后,尝试通过console.log输出course。如果未定义,您将不会得到任何响应。
  • @TobiasF。我已经输出了课程和部门的价值,他们工作得很好。
  • 我认为你应该试试@scaisEdge 的回答,看来他是对的。
  • 如果您还没有意识到,您的代码很容易受到 SQL 注入攻击。请改用参数化查询。

标签: php jquery ajax mysqli


【解决方案1】:

您的 Ajax 调用需要 JSON (dataType: 'json'),但您不会通过 PHP 输出返回 JSON,因为默认内容类型是 text/html 而不是 application/json。在echo'ing 您的 JSON 输出之前添加适当的 Content-Type 标头。

header('Content-Type: application/json');
echo json_encode(array('something' => 'else'));

【讨论】:

  • 其实在此之前我也使用过 json ,并且它们在单个 post 变量上工作得很好。
【解决方案2】:

当然,我刚刚更改了变量名,我的函数开始工作了,不知道为什么会这样:

data:{ department: department, courseid: course},

【讨论】:

  • 它是给您查询的预期结果,还是只是“不可用”?
【解决方案3】:

你回显一个数组,所以你应该通过索引访问数据元素作为数组..

例如对于第一个元素

       success: function(data){
            $('#head_name').html(data[0].head_name);
            $('#email').html(data[0].email);
        }

最终尝试 jsonParse 数据

       success: function(data){
             jsonData = JSON.parse(data);
            $('#head_name').jsonData(data[0].head_name);
            $('#email').jsonData(data[0].email);
        }

您应该使用数组来存储值

        while($row = $query->fetch_assoc()){

        $temp[] = array('head_name' => '<option value="'.$row['head_name'].'">'.$row['head_name'].'</option>', 'email' => '<option value="'.$row['email'].'">'.$row['email'].'</option>' );
        echo json_encode($temp);
    }

【讨论】:

  • 仍然无法正常工作,如果我只发送数据中的一个变量
  • 我要求查看结果 .of 。 var_dump(json_encode($temp)); ..如果你让我看看结果。我可以评估它,否则..我什么也不能告诉你
  • var_dump(json_encode($temp));确实输出任何东西
  • 嘿,伙计,我当然只需要重命名变量值,函数就可以工作了
  • 嗨@scaisEdge,我又遇到了一个问题,实际上,如果数据库中有单条记录,则此功能运行良好,但如果有多个记录,则它不显示值,可能是我不知道如何填充 json 数组,你能帮帮我吗?
猜你喜欢
  • 2021-07-30
  • 2022-08-16
  • 1970-01-01
  • 2014-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2021-08-05
相关资源
最近更新 更多