【问题标题】:Laravel plus Ajax to implement search barLaravel 加 Ajax 实现搜索栏
【发布时间】:2018-09-14 20:59:09
【问题描述】:

这是我的视图 ajax 部分

function getSearch(){
            var sr_s_id= $('#sr_s_id').val();
            var sr_name= $('#sr_name').val();
            var sr_department= $('#sr_department').val();
            var sr_semester= $('#sr_semester').val();
            var request = new XMLHttpRequest();
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
            $.ajax({
                type    :"POST",
                url     :"{{url('/management/sutdent')}}",
                dataType:"json",
                data    :{ s_id:sr_s_id,name:sr_name,department:sr_department,semester:sr_semester },
                success :function(response) {
                    alert(response);
                },
                error: function(response) {
                    alert(response);
                }
            });

        }

这是我的控制器

public function getSearch(Request $request){
        $s_id =$request->s_id;
        $name =$request->name;
        $department = $request->department;
        $semester =$request->semester;
        $student_list=$this->UserRepository->getSearchdata($s_id,$name,$department,$semester);  
        //echo $student_list;

        return response()->json($student_list);

    }

这里是仓库

public function getSearchdata($s_id=null,$name=null,$department=null,$semester=null){


        return $this->user
            ->select('s_id','name','email','user_info.updated_at as editDate','semester','USN','phone','address','Department')
            ->leftjoin('user_info','s_id','user_info.school_id')
            ->where(['r_id','=','1'],['s_id','like',$s_id],['name','like',$name],['department','like',$department],['semester','like',$semester])
            ->orderBy('s_id','asc')->get();
    }

我有两个关于我的代码的问题。 首先,当我点击搜索栏按钮时,它会显示

消息:“数组到字符串的转换”,异常:“ErrorException”,…}

我认为这是查询问题,但我不知道是怎么回事。

其次,有没有人知道repository.php中的请求值是否为空?然后,我需要使用 laravel 格式将结果推送到 where。

在通常的 php 文件中,我们将使用字符串组合。喜欢

$Where ="something=".$a

if($something!=null)
{
    $Where.=",something=".$something;
}

但我不知道如何使用 laravel 语言。 有没有人可以帮我解决这两个问题?


新问题:Json 输出。 再次显示第一个查询是否正常? 我的意思是....

{s_id: "ym1234", name: "one", email: "test@test.com", editDate: "2018-04-12 05:54:32",…},…]
0
:
{s_id: "ym1234", name: "one", email: "test@test.com", editDate: "2018-04-12 05:54:32",…}
Department
:
"test"
USN
:
"student"
address
:
"CS123"
editDate
:
"2018-04-12 05:54:32"
email
:
"test@test.com"
name
:
"one"
phone
:
null
s_id
:
"ym1234"
semester
:
"105"
1
:
{s_id: "ym321", name: "two", email: "test@test.com", editDate: "2018-04-07 23:53:29",…}
Department
:
"test"
USN
:
"student"
address
:
"CS123"
editDate
:
"2018-04-07 23:53:29"
email
:
"test@test.com"
name
:
"two"
phone
:
null
s_id
:
"ym321"
semester
:
"106"}]

【问题讨论】:

  • 错误显示的行是什么?
  • 消息:“数组到字符串的转换”,异常:“ErrorException”,...} 异常:“ErrorException”文件:“D:\XAMPP\htdocs\YangMing567\vendor\laravel\framework\src\ Illuminate\Database\Query\Grammars\Grammar.php" 行:198 消息:"数组到字符串的转换"
  • 那里只显示这些

标签: php ajax laravel searchbar


【解决方案1】:

我认为您忘记在 where 条件中添加 [ ] 将您的功能更改为

public function getSearchdata($s_id=null,$name=null,$department=null,$semester=null){


    return $this->user
        ->select('s_id','name','email','user_info.updated_at as editDate','semester','USN','phone','address','Department')
        ->leftjoin('user_info','s_id','user_info.school_id')
        ->where([['r_id','=','1'],['s_id','like',$s_id],['name','like',$name],['department','like',$department],['semester','like',$semester]])
        ->orderBy('s_id','asc')->get();
}

【讨论】:

    【解决方案2】:

    我认为您需要将所有条件组合到一个数组中,以获取 where([['r_id','=','1'],['s_id','like',$s_id],['name','like',$name],['department','like',$department],['semester','like',$semester]]) 等 where 条件

    其次,您的客户端代码有错误,并且可能会产生相同的错误 - 因为您要提醒 json 格式的对象。您指定 dataType : json 表示响应转换为 JSON 格式。如果你提醒你的 JSON 对象,那么错误就很明显了。

    现在,第二个问题是-

    这就是我在代码 sn-p 中使用的 - 假设您应该在 getSearchdata 函数中包含以下代码

    $query = $this->user
             ->select('s_id','name','email','user_info.updated_at as editDate','semester','USN','phone','address','Department')
            ->leftjoin('user_info','s_id','user_info.school_id')
            ->where('r_id','=','1');
    
    if($s_id)
    {
       $query->where('s_id','=',$s_id);
    }
    if($name)
    {
       $query->where('name','like','%'.$name.'%');
    }
    if($department)
    {
       $query->where('department','like','%'.$department.'%');
    }
    if($semester)
    {
       $query->where('semester','like','%'.$semester.'%');
    }
    return $query->orderBy('s_id','asc')->get();
    

    让我知道,它是否适合你......

    【讨论】:

    • 你已经弄清楚所有可能的问题
    • 对不起,我两天前不在家。是的!!两个问题都解决了。谢谢你的帮助!!这是工作,感谢您的想法。
    • @Zong 感谢您的回答和欢迎。你赞成我的回答...
    • @VeshrajJoshi 嗨~我还有一个问题!关于我的 josn 输出
    • 请...随意
    【解决方案3】:

    我认为你的getSearchdata 函数不正确:

        public function getSearchdata($s_id = null, $name = null, $department = null, $semester = null)
        {
    
            return $this->user
                ->select('s_id', 'name', 'email', 'user_info.updated_at as editDate', 'semester', 'USN', 'phone', 'address', 'Department')
                ->leftJoin('user_info', 's_id', 'user_info.school_id')
                ->where('r_id', '=', '1')
                ->where('s_id', 'like', $s_id)
                ->where('name', 'like', $name)
                ->where('department', 'like', $department)
                ->where('semester', 'like', $semester)
                ->orderBy('s_id', 'asc')->get();
    
       }
    

    【讨论】:

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