【问题标题】:php echo mysql array result in ajaxphp echo mysql数组导致ajax
【发布时间】:2014-04-28 01:54:39
【问题描述】:

下面的function 是我的controller 代码,由ajax 请求调用:

function search_featured_candidates() {       
   $skills = $this->input->post('skills');
   $this->load->model('Featured_candidate', 'featured', TRUE);
   $result = $this->featured->get_featured_candidates_by_skills($skills);
   if ($result) {
      $str = "";
      foreach ($result as $row) {
          $str .= "Name: " . $row->candidate_name . "<br/>";
          $str .= "Exp: " . $row->experience . "<br/>";
          $str .= "Skills: " . $row->skills . "<hr/>";
      }
      $html = $str;
      echo json_encode(array('html' => $html, 'success' => TRUE));
      } else {
          $html = 'No Candidates Found!';
          echo json_encode(array('html' => $html, 'success' => FALSE));
      }
 }

我的view 代码:

<script>
$(function() {
    $("#featured_candidates").on("change paste keyup", function() {
        $.ajax({
            type: "POST",
            url: "<?php echo base_url(); ?>mypage/search_featured_candidates/",
            data: {skills: $(this).val()},
            dataType: "json",
            success: function(data) {
                if (data.success === true) {
                    $("#featured").html(data.html);
                } else {
                    $("#featured").html(data.html);
                }
            }
        });
    });
});
</script>

 <div class="panel-body">
        <div>
            <input type="text" style="width: 100%" 
             name="featured_candidates" id="featured_candidates" 
             placeholder="keyword / skills" title="Featured Candidates" 
             />
            <br/><hr/>
        </div>
        <div id="featured">
            <?php
            foreach ($result as $row) {
                echo "Name: " . $row->candidate_name . "<br/>";
                echo "Exp: " . $row->experience . "<br/>";
                echo "Skills: " . $row->skills . "<hr/>";
            }
            ?>
        </div>
    </div>

现在我正在尝试使用ajax 显示result array,就像我在使用foreachview 代码中显示的那样。所以要使用ajax 显示它,我已经在$str 的控制器方法中连接了数组,但是当我将控制器方法更新为此时它不起作用:

 function search_featured_candidates() {       
   $skills = $this->input->post('skills');
   $html = $skills ;
   echo json_encode(array('html' => $html, 'success' => TRUE));
 }

它工作正常..任何帮助或建议都会有很大帮助...在此先感谢..

【问题讨论】:

    标签: php jquery mysql ajax arrays


    【解决方案1】:

    您的问题的表述使您很难知道您的问题到底出在哪里。但是从快速浏览来看,您通常必须设置正确的标头才能使用 PHP 输出 json 格式的数据。

    在你做你的echo之前尝试添加这个,也许这可以解决你的问题:

    header('Content-Type: application/json');
    

    【讨论】:

    • 您的&lt;br/&gt;&lt;hr/&gt; 可能有问题。尝试用&lt;br \/&gt;&lt;hr \/&gt; 替换它们。查看此答案中发布的链接:stackoverflow.com/a/11657161/2358063
    【解决方案2】:

    你错了

    foreach ($result as $row) {
        echo "Name: " . $row->candidate_name . <br/>";
        echo "Exp: " . $row->experience . "<br/>";
        echo "Skills: " . $row->skills . "<hr/>";
    }
    

    你忘记了"

    . $row->candidate_name . "<br/>";
                        //   ^ You forgot the "
    

    【讨论】:

      猜你喜欢
      • 2010-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多