【问题标题】:Call details from javascript in laravel从 laravel 中的 javascript 调用详细信息
【发布时间】:2019-02-26 18:55:01
【问题描述】:

想要根据用户选择从 laravel 项目中的数据库中获取详细信息,为此创建了一个下拉列表,用户可以从中选择任何 id 进一步发送到 javascript。 这是laravel代码:

<div class="form-group">
    <label class="col-lg-2 col-sm-2 control-label">Select Teacher</label>
    <div class="col-lg-10">
        <select class="form-control  select2" name="teacher" id="teacher" onchange="teacherFunction()" required autofocus>
            <option value="null">Select Teacher</option>
                @foreach($users as $user)
                    <option value="{{$user->id}}">{{$user->name}}</option>
                @endforeach
        </select> 
        <p class="help-block"></p>
    </div>
</div> 

这工作正常,数据正在发送到 java-script 函数:

这里是javascript代码:

function teacherFunction(){
   var output = document.getElementById('teacher').value;
   console.log(output);
   var test = Number(output);
   console.log();
   console.log(test);
   document.getElementById('output').innerHTML = '@foreach($users as $user) @if($user->id == '+1+') Test @endif @endforeach';
}

在通过 innerHTML 发送输出时,当我使用用户选择的输出值时,我使用 id 硬编码它的工作正常,然后 if 条件不起作用。 试过了:

JSON.stringify()
JSON.parse()
parseINT()
Number()

所有这些都不起作用。对此的任何解决方案将不胜感激。

【问题讨论】:

  • 输出有效,因为它在服务器端运行,您需要将所有用户保存在 javascript 中的数组中才能在会话中访问它
  • 如果出现错误请告诉我stackoverflow.com/questions/54883313/…
  • @Googlian 它按预期工作,感谢您的帮助。
  • 不客气,编码愉快 :)

标签: javascript laravel


【解决方案1】:

您的 JavaScript 代码应如下所示,您不能像以前那样在 JavaScript 中键入验证,因为首先执行服务器端代码。

function teacherFunction(){
   var output = document.getElementById('teacher').value;
   console.log(output);
   var test = Number(output);
   console.log();
   console.log(test);

   var data = {!! json_encode($users) !!};

   for(int x = 0; x < data.length; x++) {
     if(data[x].id == output) {
       document.getElementById('output').innerHTML = 'TEST';
     }
   }

}

【讨论】:

    【解决方案2】:

    PHP 是在服务器端运行的,这意味着 JavaScript 不能直接与 PHP 交互。 当你的函数被执行时,它看起来不像

    document.getElementById('output').innerHTML = '@foreach($users as $user) @if($user->id == '+1+') Test @endif @endforeach';
    
    

    但喜欢

    document.getElementById('output').innerHTML = 'test';
    

    为了能够访问整个用户列表并相应地打印信息,您可以将集合放入 JavaScript 变量中

    let users = {{json_encode($users)}};
    

    另一种方法是使用 ajax 或 $.get(); 在选择后从服务器检索它

    【讨论】:

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