当前位置: 首页 > 知识库问答 >
问题:

尝试使用ajax从laravel中的表中提取单个记录

衡子安
2023-03-14

这是我写在路由文件中的代码

        `Route::get('/{username}/ajax-lead', function(){

          $brand_id = Input::get('brand_id');
          $table_data = DB::table('users')->where('brand_id',$brand_id)->get();
          $table_name = $table_data[0]->table_name;
          $table_lastRecords = DB::table($table_name)->get();     
          $columns = Schema::getColumnListing($table_name);
          $table_lastRecords = DB::table($table_name)->get();

            return Response::json($table_lastRecords);
        });`

here is my view file 


            `{{Form::open(array('url'=>'','files'=>true))}} 
            
                client list *
                                  
                    
                        
                           Select Clients 
                        
                        @foreach($brand as $userLeads){
                            brand_id }}">{{ $userLeads->name }}
                        }
                        @endforeach

                    

                

           
            {{Form::close()}}
           
                $('#brand_name').on('change',function(e){
                    // body...
                    console.log(e);

                    var brand_id = e.target.value;

                    //ajax Call
           $.get('/{username}/ajax-lead?brand_id=' + brand_id,function(data){
                        //success data
                        console.log(data);
                    });
                });
            `

我想获得table_name列值作为响应。我使用json进行响应。

共有1个答案

海嘉赐
2023-03-14

答案:最简单的解决方案是返回一个数组数据,其中第一个值是table_name,第二个值是lastrecords的集合。它看起来像这样:

$responseArray[0] = $table_name;
$responseArray[1] = $table_lastRecords;

return json_encode($responseArray);

然后,在您的视图中,您将解析Json响应,并让table_name=responseData[0]和lastRecords=responseData[1]。当然,您也可以使用非数字索引来提高代码的可读性,例如responseData['table_name'],但这些语义取决于您。

其他信息:

话虽如此,您的代码中有几个问题,我觉得我应该指出。您应该更加熟悉雄辩的查询,因为正确地使用它们将大大简化您的代码。例如,这两行:

$table_data = DB::table('users')->where('brand_id',$brand_id)->get();
$table_name = $table_data[0]->table_name;

可以改写为:

$table_name = User::where('brand_id',$brand_id)->first()->table_name;

但这让我问了一个问题,是不是每个品牌只有一张桌子?如果是这样,为什么要将这些信息与用户一起存储,而不是存储在“Brands”表中?最有意义的方法是有一个Brands模型,它有一个table_name列,您可以通过以下简单的查询获得表名:

$table_name = Brand::find($brand_id)->table_name;

此外,您应该避免在routes文件中进行这种类型的工作。任何与用户路由无关的内容都应该在控制器或模型中处理。然后,在控制器中,您应该通过导入app\User和app\Brand在查询中使用用户或品牌模型。

 类似资料:
  • 问题内容: 我正在尝试使用AJAX技术添加评论,但出现错误: 这是我的代码:View: 控制器: AJAX: 最后一条路线: 任何人都知道问题出在哪里,为什么我不能提交表格? 问题答案: 您没有发布任何数据, 您得到的错误是DB中的列不能为空。 尝试将您的ajax调用更改为此: 改变这个 至 并获取消息和帖子ID: 完成ajax块: 最后,在隐藏字段中添加一个ID: 从Laravel控制器发送回数

  • 问题内容: 我想使用ajax删除记录。 视图 控制者 Ajax删除 编辑1 : 如果我只返回console.log(msg),这就是我得到的 事实是,这会删除产品,但只会删除第一行,而不是单击的行。 我要删除单击的产品。 有人可以帮忙吗? 问题答案: 您的问题在这里: 您将只获得第一个,因为您在所有按钮上使用重复的ID。因此,一个ID嘶嘶声查询将使您获得第一个。 如果您在删除控制器中的dd($ i

  • 所以我一直在寻找和做试验和错误的几天,现在我在这里寻求帮助。 我在我的网站上创建了一个页面,该页面从数据库的表中提取日程信息,并将其显示到网页中。我试图从同一数据库中的第二个表中提取颜色方案,当第一个表上的名称与第二个表上的名称匹配时,只有该名称将以指定给它的不同颜色显示。我的表格如下: 发射型计算机断层扫描仪

  • 问题内容: 我正在尝试在wordpress中获取ajax请求的结果,但是在javascript的警报框中却获得了“ 0”的结果,因此该表单如下所示: javascript看起来像这样: 和PHP: 有谁知道上面的代码是否正确,我也尝试过$ _REQUEST [‘name’],它不起作用。 非常感谢 问题答案: 尝试这样的操作,您没有在PHP 函数中添加期望的参数,因此必须将其添加到jQuery a

  • 问题内容: 我正在尝试使用jquery将值提交到数据库。我是ajax的新手,但是我必须使用ajax。 到目前为止,这是我已经完成的PHP代码 我的html代码是 这是我使用jQuery的ajax 我不知道我在做什么错。任何帮助将不胜感激 问题答案: 与其干扰表单的Submit事件,不如点击事件。要对现有设置进行最小的更改,只需将点击处理程序添加到表单提交按钮。处理程序中的第一件事是调用e.prev

  • 我尝试使用Laravel5.2Auth使用Ajax创建登录表单。 Laravel默认登录功能: /登录返回索引页作为响应。我需要关于错误消息或成功消息的json响应。据说改变Laravel的核心功能是不可取的。那我怎么才能拿到呢?