我有一个下拉列表。对于所选的特定选项,我想用来自控制器的视图呈现具有不同数据的HTML。
为此,我在视图中编写脚本标签,然后在条件允许的情况下在jQuery内使用blade foreach,然后在刀片php内迭代HTML。但它给了我错误
userprofile:966 Uncaught SyntaxError: Unexpected token <
我是Laravel的新手,仍然在探索,所以想知道是否有可能。 如果不可能,那我该怎么办呢?
这是我的代码
<script>
$(document).ready(function () {
if ($("#user_right").val() == 1)
{
@foreach ($user_alias_detail["a"] as $user)
<div class="field">
<input type="text" value="{{ $user->name }}">
</div>
@endforeach
}
elseif ($("#user_right").val() == 2)
{
@foreach ($user_alias_detail["b"] as $user)
<div class="field">
<input type="text" value="{{ $user->name }}">
</div>
@endforeach
}
});
</script>
答案 0 :(得分:0)
要给您一个完整的答案,我需要知道所有这些元素应在您的代码中显示出来。
我会用这样的东西。您将您的php数组转换为json数组,然后 使用(for .. in)循环遍历json数组。使用jquery append,您可以将html插入父DOM元素中。
<script>
var user_a = @json($user_alias_detail["a"]);
var user_b = @json($user_alias_detail["b"]);
$(document).ready(function () {
if ($("#user_right").val() == 1)
for(var user in user_a) {
// container div is the wrapper element
$(".container-div").append('<div class="field">
<input type="text" value="'+user.name+'">
</div>');
}
}
elseif ($("#user_right").val() == 2)
{
for(var user in user_b) {
// container div is the wrapper element
$(".container-div").append('<div class="field">
<input type="text" value="'+user.name+'">
</div>');
}
}
});
</script>
答案 1 :(得分:0)
尝试这段代码。我花时间为你写。您可以对其进行修改以适合您的需求。谢谢。
//form blade
<div class="form-group">
<label class="control-label">Select Value <span style="color:red">*</span></label>
<select class="form-control" id="user_right" name="user_right" required>
<option value="">--Select--</option>
<option value="1"{{(old('user_right')=='1')? "selected" : ""}}>One</option>
<option value="2"{{(old('user_right')=='2')? "selected" : ""}}>Two</option>
<option value="3"{{(old('user_right')=='3')? "selected" : ""}}>Three</option>
</select>
</div>
<div class="form-group">
@if($htmldata=='')
<!--display nothing on page-->
@else
{{ $htmldata->recorddetails }}
@elseif
</div>
//javascript code to fetch the item id
<script type="text/javascript">
// When the document is ready
$(document).ready(function(){
$("#user_right").change(function(e){
var value= e.target.value;
if ("https:" == document.location.protocol)
{
location.href="https://example.com/renderpage/"+value;
}
else
{
location.href="http://example.com/renderpage/"+value;
}
});
</script>
//route
Route::get('/loadpage','Controller@displayPage');
Route::get('/renderpage/{id}','Controller@displaydataonPage');
//controller to load page
public function displayPage()
{
$data['htmldata']='';
return view('htmlpage', $htmldata);
}
//controller to display data on page
public function displaydataonPage($id)
{
$data['htmldata']=DB::table('table')->where('datavalue',$id)->orderby('rank','asc')->first();
return view('htmlpage', $htmldata);
}
答案 2 :(得分:-1)
使用模板文字``
<script>
$(document).ready(function () {
if ($("#user_right").val() == 1)
{
`
@foreach ($user_alias_detail["a"] as $user)
<div class="field">
<input type="text" value="{{ $user->name }}">
</div>
@endforeach
`
}
elseif ($("#user_right").val() == 2)
{
`
@foreach ($user_alias_detail["b"] as $user)
<div class="field">
<input type="text" value="{{ $user->name }}">
</div>
@endforeach
`
}
});
</script>
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals