I'm trying to submit users comments via ajax so I'm trying to loop through <div class="comments-fields"> to get the value of the 2 fields I need.
So far all I'm getting is this error, as if I am not filling the comments textarea which I am.
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'comment' cannot be null (SQL: insert into
comments(user_id,comment,parent_id,parents,updated_at,created_at) values (1, , , 0, 2015-10-17 00:57:59, 2015-10-17 00:57:59))
and console.log(formData) gives something like this.
formData {}
__proto__: FormData
append: append()
constructor: FormData()
__proto__: Object
How can I achieve this? if there is a better way please suggest.
HTML
<div class="comment-fields">
<div class="commenter-comment">
<div class="form-group col-md-12">
<textarea id="commenter_comment" name="commenter_comment" class="form-control comment-field" title="User's comment" placeholder="Comment Text"></textarea>
</div>
</div>
<div class="commenter-name-email">
<input type="hidden" id="commenter_parent" name="commenter_parent" class="commenter-parent" value="0">
</div>
<div class="commenter-captcha">
<div class="col-md-3 text-right">
<a href="javascript:void(0)" class="btn btn-info post-this-comment">Comment</a>
</div>
</div>
</div>
The Javascript
function commenter_fields(){
return [
'commenter_parent',
'commenter_user_id',
'commenter_comment'
];
}
$(document).on('click', 'a.post-this-comment', function(){
var formData = new FormData();
var arrayelem = commenter_fields();
var elem;
for(var i=0, size = arrayelem.length; i<size; i++){
elem = arrayelem[i];
formData.append(elem, $('#'+elem).val());
}
formData.append('per_page', $('.comments_per_page').val());
var request = $.ajax({ // push question data to server
type : 'POST', // define the type of HTTP verb we want to use (POST for our form)
url : 'post_this_comment', // the url where we want to POST
data : formData, // our data object
dataType : 'json',
processData : false,
contentType : false
});
request.done(comment_done_handler);
request.fail(comment_fail_handler); // fail promise callback
});
I am using PhpStrom, clicking on FormData() leads to this file
C:\Program Files (x86)\JetBrains\PhpStorm 9.0\plugins\JavaScriptLanguage\lib\JavaScriptLanguage.jar!\com\intellij\lang\javascript\index\predefined\HTML5.js
And this is FormData
FormData.prototype.append = function(name,value) {};
FormData = {};
