【发布时间】:2014-08-15 09:35:55
【问题描述】:
使用 CKEDITOR 时,我的表单在第一次提交时没有向服务器发送数据。如果我单击它一次,它会在没有我输入的情况下发送空字段。但是,如果我再次提交它,它会将输入的数据发送到服务器。所以你需要提交两次才能将数据传递给服务器。
我将 CKEDITOR 与 BBCODE 插件捆绑在一起。
jQuery Ajax
$('form#ajax').on('submit', function(){
var that = $(this),
url = that.attr('action'),
type = that.attr('method'),
data = {};
that.find('[name]').each(function(index, value){
var that = $(this),
name = that.attr('name'),
value = that.val();
data[name] = value;
});
console.log(data.message); // Outputs on second submit
$.ajax({
url: url,
type: type,
data: data,
success: function(response){
//
}
});
return false;
});
表格
{{ Form::open(array('action' => 'AppsController@sendApp', 'class' => 'app', 'id' => 'ajax')) }}
<div class="form-container">
{{ Form::label('message', 'Application', array('style' => 'padding-top: 5px')) }}
<textarea name="message" cols="50" rows="6" class="form-control" id="eitor" style="padding-top:5px;"></textarea>
</div>
{{ Form::submit('Send Application', array('class' => 'btn btn-core btn-block submit', 'style' => 'margin-top: 5px')) }}
{{ Form::close() }}
很抱歉,如果表单语法对您来说很陌生,它是 Laravel Blade。
回顾
第一次提交时,发送到服务器的数据是空的。在第二次提交时,它不是。
【问题讨论】:
-
您是否尝试过使用浏览器的检查器调试代码? ctrl+shift+i con google chrome,转到 Sources 选项卡,按 ctrl+o 并用你的 javascript 打开文件,现在放置一些断点并检查值,你会发现那里的错误
-
你能提供一个链接吗?我怀疑这可能与表单标签或表单上的操作有关。
-
@arieljuod 我已经调试了代码,它没有显示错误。一个 SO 问题是我最后的选择。
-
@LindyHop 与动作无关。我完全禁用了 AJAX 调用,并简单地在控制台记录了 message 的值,它首先返回空,然后再填充。
-
这个问题(和答案)类似于 3 年前提出的这个问题。 stackoverflow.com/questions/3256510/…
标签: javascript php jquery ajax forms