【问题标题】:Can't solve code in Ajax,PHP,Json,Laravel(PHP Framework)无法解决 Ajax、PHP、Json、Laravel(PHP 框架)中的代码
【发布时间】:2014-10-17 11:32:32
【问题描述】:

无法访问从 php 函数(使用 laravel 框架)发送到 ajax 调用的 json 编码数据。 我正在编码数据库结果 这是我正在使用的 php 函数 公共函数 newLearner(){

            $first_name = $_POST['firstname'];
            $last_name = $_POST['lastname'];
            $student_id = $_POST['student_id'];

          if(!empty($first_name) && empty($last_name) && empty($student_id)){
           $learner = Learners::where('first_name','=',$first_name)->get();

            return json_encode($learner);

          } 

在我使用过的javascript方面:

function newLearner() {

  var firstname = $('input[name=new_first_name]').val();
  var lastname = $('input[name=new_last_name]').val();
  var student_id = $('input[name=new_id]').val();
  //alert(firstname);
   var URL = "/teghlearner/public/admin/newLearner";
   var info ={
    "firstname":firstname,
    "lastname" : lastname,
    "student_id" : student_id
    };


$.ajax({
      type: "post",
      url: URL,
      data : info,

      success: function(result) {


        //alert(result['first_name']);
        for(var i=0;i<result.length;i++){
   var item=result[i];
   alert(item['first_name']);
   alert(item['last_name']);
}




      },

       error: function(jqXHR, textStatus, errorThrown) {

        $('#data').html(result);

    }

    });


}


And this is the JSON Returned from the php function

[
    {
        "id": 24,
        "title": "Mr",
        "first_name": "Patrick",
        "last_name": "Vinc",
        "gender": "male",
        "email": "nupur@gmail.com",
        "password": "$2y$10$yCyGBOtX6kF3ghy/k8YuXe4wR9W5hYtTGDkl5trTEd7.s5LntOQ.u",
        "phone_type": null,
        "phone_number": "0000000000",
        "pager_number": "00000000000000",
        "address_line_1": "",
        "address_line_2": "",
        "city": "",
        "postal_code": "",
        "province": "BC",
        "country": null,
        "emc_contact": "",
        "emc_phone": "000000000000000000",
        "emc_relation": "",
        "passcode": "",
        "locker": "999999",
        "combination": "abc567",
        "its_username": null,
        "its_password": null,
        "dictation_number": null,
        "emailed": 1,
        "signed": 0,
        "student_num": "12345634",
        "level": "Default",
        "persist_code": "",
        "activated_at": "2014-08-23 16:04:18",
        "program": null,
        "school": "",
        "service": "",
        "undergrad_year": null,
        "undergrad_level": null,
        "activated": 1,
        "activation_code": "",
        "undergrad_text": null,
        "cpso_num": 0,
        "start_date": "2014-08-01",
        "end_date": "2014-08-31",
        "learner_start_date": "0000-00-00",
        "learner_end_date": "0000-00-00",
        "vacation_start_date": "0000-00-00",
        "vacation_end_date": "0000-00-00",
        "physician": "1",
        "affiliates": null,
        "mask": "",
        "mask_fit_month_year": "",
        "learner_type": null,
        "status": 1,
        "last_login": "0000-00-00 00:00:00",
        "reset_password_code": "",
        "permissions": "",
        "created_at": "-0001-11-30 00:00:00",
        "updated_at": "2014-08-22 21:27:17"
    }
]

如何在 javascript 函数中从这个 JSON 数据中获取 first_name 和 last_name? 问题

【问题讨论】:

  • 你是否从 php 脚本中得到返回的东西?使用浏览器开发者工具。
  • @CharlotteDunois 是的,我正在从 php 获取 json 数据。我已经提到我得到的结果是 json。
  • 如果您不确定您的实际数据结构是什么样的,请将您收到的响应 AJAX 调用的对象记录到浏览器的控制台,以便您可以检查它。
  • @CBroe 这是我得到的 JSON 格式 [ { "id": 24, "title": "Mr", "first_name": "Patrick", "last_name": " Vinc”、“性别”:“男性”、“start_date”:“2014-08-01”、“end_date”:“2014-08-31”、“learner_start_date”:“0000-00-00”、“learner_end_date” :“0000-00-00”,“vacation_start_date”:“0000-00-00”,“vacation_end_date”:“0000-00-00”,}]
  • 您的 JSON 无效。 Vacation_end_date 之后的最后一个逗号正在创建无效的 JSON 字符串。您是否尝试过 Response::json 而不是 json_encode?​​span>

标签: javascript php ajax json laravel


【解决方案1】:

问题是响应中的内容类型是 text/html。这使 jquery 认为响应是 html。在这种情况下,jquery 不会解析 json。要解决这个问题,只需删除 json_encode。你的 laravel 控制器应该是这样的:

$first_name = Input::get('firstname');
$last_name = Input::get('lastname');
$student_id = Input::get('student_id');

if(!empty($first_name) && empty($last_name) && empty($student_id)) {
    return Learners::where('first_name','=',$first_name)->get();
}

这是因为当你返回一个集合时,Laravel 会自动将它转换为 json 并将 content-type 设置为 application/json。

还请注意,您应该使用 Input 门面来获取 post 变量,而不是使用 _POST 超全局变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多