从窗体将窗体数据从视图传递到控制器
Passing form data from view to controller from a form
我是laravel的新手,正在处理一个现有的项目。我有一个将数据传递给Laravel控制器的表单:
<div class="share_popup" id="share_popup">
<div class="row">
<div class="col">
<div class="body">
<button class="x">
<span class="sprite close"></span>
</button>
<div class="sprite logo"></div>
<!--<strong><span id="item_shared">Item name</span></strong>-->
<form id="email_form">
<input name="share_email" id="share_email" type="text" class="email" placeholder="Email" required>
<input name="share_name" id="share_name" type="text" class="name" placeholder="Name" required>
<input type="hidden" name="hint_id" id="hint_id" value="">
<span style="float:left;">Include a message below, if you'd like. test2</span><br/><br/>
<textarea name="message" id="message" placeholder="Message here..." class="description"> </textarea>
<button type="submit" onclick="shareHint(event)" id="share_button">Share</button>
</form>
</div>
</div>
</div>
</div>
以下是提交时在控制器中运行的函数的简化版本:
function shareHint($hint_id) {
$input = 'Request::input();
$passedemail = $input['email'];
}
$input['email']如何获得电子邮件地址:
<input name="share_email" id="share_email" type="text" class="email" placeholder="Email" required>
是从表格的这一部分传来的吗?
我不知道这个协会是从哪里来的,但它正在过去。
如果我想要另一个表单字段,我将如何访问它作为控制器功能的一部分?
编辑:
我相信Moppo是正确的,因为这个javascript正在运行。
function shareHint(e, hint_id){
e.preventDefault();
var email = $("#share_email").val();
var hinturl = window.location.protocol + "//" + window.location.host + "" + window.location.pathname + "?h="+data.currentHint._id;
var r = new XMLHttpRequest;
r.open("POST", "/hint/"+ hint_id +"/share"), r.addEventListener("readystatechange", function() {
if (4 == r.readyState)
if (200 == r.status){
$(".share_popup").css('visibility', 'hidden');
$("#share_email").val("");
$("#message").val("");
//alert("Successfully shared hint with " + email + "!")
$("#alert_error").html("Successfully shared hint with " + email + "!");
$("#alert_popup").addClass("visible");
}else if (400 == r.status) {
var e = JSON.parse(r.responseText);
//alert(e.message)
$("#alert_error").html(e.message);
$("#alert_popup").addClass("visible");
}
else{
$("#alert_error").html('Sorry, an error occurred');
$("#alert_popup").addClass("visible");
// alert("Sorry, an error occurred")
}
});
var a = new FormData;
a.append("hinturl", hinturl), a.append("email", email), a.append("message", $("#message").val()),a.append("_token", csrf_token), r.send(a)
}
如果名为share_email
的输入以email
的形式到达控制器,则可能是某些中间件修改了请求,从而更改了输入名称。因此,你应该检查应用程序的中间件,看看其中是否有人在更改请求。
或者,可能是一些javascript代码在发送表单之前更改了输入名称
编辑
查看代码显示,实际上是javscript发送"电子邮件"输入:
var a = new FormData;
a.append("hinturl", hinturl), a.append("email", email),
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 防止Iframe窗体在新窗口中打开
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 从控制器返回后Ajax启动事件激发
- Meteor-将选定窗体中的对象添加到集合中
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何在单击复选框后调用控制器方法
- 在控制器和数据对象之间同步数据
- 将Javascript数组发送到控制器ASP.NET MVC
- 角度控制器结构
- 如何在Jquery中发布后将值从视图返回到控制器
- 模型数据未通过窗体传播到控制器ASP.NET MVC4
- 如何打开模态窗体,在控制器中执行操作,并在 Grails 中呈现结果
- 角度数组未传递到主控制器窗体对象
- 从窗体将窗体数据从视图传递到控制器
- 在多个窗体中对控制器进行角度、必要的检查
- 控制器中未定义窗体
- 在弹出窗口中加载内容窗体控制器
- Rails动态窗体远程真实控制器没有响应
- 从子控制器获取窗体状态到父控制器