Everything works fine, the data is already saving into mySQL but the thing is I'm still having this error "parsing JSON request failed". I'm not pretty sure where the error comes from and its cause.
Script:
$("#add_submit_form").on("submit", function(event) {
event.preventDefault();
console.log($(this).serialize());
$.ajax({
type: "POST",
url: "add_submit.php",
data: "subject_code="+subj_code,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(data){
alert("success");
},
error:function(x,e){
if(x.status==0){
alert('You are offline!!
Please Check Your Network.');
}else if(x.status==404){
alert('Requested URL not found.');
}else if(x.status==500){
alert('Internel Server Error.');
}else if(e=='parsererror'){
alert('Error.
Parsing JSON Request failed.');
}else if(e=='timeout'){
alert('Request Time out.');
}else {
alert('Unknow Error.
'+x.responseText);
}
}
});
});
PHP:
header('Content-type: application/json');
require_once('/include/connect.php');
/** Pass the user inputs into re-useable variables **/
$subject_code = mysql_real_escape_string(trim($_POST['subject_code']));
$subject_name = mysql_real_escape_string(trim($_POST['subject_name']));
$subject_course = mysql_real_escape_string(trim($_POST['subject_course']));
$subject_day = mysql_real_escape_string(trim($_POST['subject_day']));
$subject_time = mysql_real_escape_string(trim($_POST['subject_time']));
$subject_year = mysql_real_escape_string(trim($_POST['subject_year']));
$subject_section = mysql_real_escape_string(trim($_POST['subject_section']));
$subject_room = mysql_real_escape_string(trim($_POST['subject_room']));
/** Prepare the SQL statement **/
$stmt = $database->prepare('
INSERT INTO schedule(
sched_id,
subject_code,
subject_name,
subject_course,
subject_day,
subject_time,
subject_year,
subject_section,
subject_room)
VALUES(?,?,?,?,?,?,?,?,?)');
/** Bind the statement into parameters**/
$stmt->bind_param('issssssss',
$sched_id,
$subject_code,
$subject_name,
$subject_course,
$subject_day,
$subject_time,
$subject_year,
$subject_section,
$subject_room);
/** Execute the statement **/
$stmt->execute();
if($stmt){
$response_array['status'] = 'success';
}
else{
$response_array['status'] = 'error';
}
echo json_encode($return);
exit;
HTML:
<form action="add_submit.php" method="POST" id="add_submit_form">
<section id="add_subject_response">response</section> <!--Hidden section for RESPONSE on ADD SCHEDULE-->
<td>
<select id="add_subject_code" name="subject_code">;
<?php
$stmt = $database->prepare('SELECT * FROM subject_schedule');
$stmt->execute();
$result = $stmt->get_result();
echo "<option id='' value=''>Select Subject Code</option>";
while ($row = $result->fetch_assoc()) {
$subj_code = $row['subject_code'];
$subj_name = $row['subject_name'];
$subj_course = $row['subject_course'];
echo "<option id='" . $subj_course . "' class='" . $subj_name . "' value='" . $subj_code . "'>" . $subj_code . "</option>";
}
?>
</select>
</td>
<td><input id="add_subject_name" class="add_required" type="text" autocomplete="off" name="subject_name"></td>
<td><input id="add_subject_course" class="add_required" type="text" autocomplete="off" name="subject_course"></td>
<td><input id="add_subject_day" class="add_required" type="text" autocomplete="off" name="subject_day" maxlength="10"></td>
<td><input id="add_subject_time" class="add_required" type="text" autocomplete="off" name="subject_time" maxlength="20"></td>
<td><input id="add_subject_year" class="add_required" type="text" autocomplete="off" name="subject_year" maxlength="10"></td>
<td><input id="add_subject_section" class="add_required" type="text" autocomplete="off" name="subject_section" maxlength="10"></td>
<td><input id="add_subject_room" class="add_required" type="text" autocomplete="off" name="subject_room" maxlength="10"></td>
<td><input id="add_submit_button" type="submit" value="Add Schedule"></td>
</form>
console log:
subject_code=FIL111&subject_name=Sining+ng+Komunikasyon&subject_course=Bachelor+of+Science+in+Information+Technology&subject_day=day_test&subject_time=time_test&subject_year=year_test&subject_section=section_te&subject_room=room_test
changes: remove mysql_real_escape_string
Script:
data: $(this).serialize(),
PHP:
echo json_encode($response_array);
Outcome: Save on mySQL, console log still the same, error still the same
Dev Tool Result :
array(8) {
["subject_code"]=>
string(6) "ENG111"
["subject_name"]=>
string(20) "Communication Arts 1"
["subject_course"]=>
string(45) "Bachelor of Science in Information Technology"
["subject_day"]=>
string(4) "test"
["subject_time"]=>
string(4) "test"
["subject_year"]=>
string(4) "test"
["subject_section"]=>
string(4) "test"
["subject_room"]=>
string(4) "test"
}
{"status":"success"}
FIX:added some codes
PHP:
$response_array = array('subject_code' => $subject_code,
'subject_name' => $subject_name,
'subject_course' => $subject_course,
'subject_day' => $subject_day,
'subject_time' => $subject_time,
'subject_year' => $subject_year,
'subject_section' => $subject_section,
'subject_room' => $subject_room);
change if/else statement to (PHP) :
if($stmt->affected_rows > 0){
echo json_encode($response_array);
}
else{
$response_array['status'] = 'error';
}