I have a jQuery ajax call to update my database using a php script.
This is the call I make:
$.ajax({
url: "update.php",
type: 'POST',
dataType: 'jsonp',
data: {key1: value1, key2: value2},
cache: false,
error: function() {
$("#failUpload").removeClass("hide");
},
success: function(data) {
$("#succesUpload").removeClass("hide");
setTimeout(function() {
$("#succesUpload").addClass("hide");
}, 5000);
}
});
PHP Update part:
$key1 = $_POST["key1"];
$key2 = $_POST["key2"];
$con=mysqli_connect("localhost","username","password","dbname");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "UPDATE TabelName SET ". $key2 ." ='". $key1 ."' WHERE id=1";
if ($result = mysqli_query($con, $sql)) {
$resultArray = array();
$tempArray = array();
while ($row = $result->fetch_object()) {
$tempArray = $row;
array_push($resultArray, $tempArray);
}
}
mysqli_close($con);
The database updates and it works but in the console.log I receive this error message: POST http://domainname.com/file.php?callback=jQuery2110765103816287592_1432976576289 500 (Internal Server Error)
When I open this I find this:
_.ajaxTransport.Y.cors.a.crossDomain.send @ jquery.js:26
I already searched and found about Cross Domain call stuff and you have to use jsonp etc but it didn't work out. Thx!
Use following function for error. It will show the exact issue. I think it will help.
error : function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.responseText+errorThrown+textStatus);
$("#failUpload").removeClass("hide");
}
All the best.
With jsonp you can't send data using POST. jQuery $.ajax call has a wrong name because it's confused. When you do an $.ajax call with "JSON-P" data that functions injects a script on your DOM (< script src="example-domain.com/do-this-task.php?callback=my_callback_on_js>).
Do this:
For me the answer in this one was to delete:
dataType: 'json'
I found the answer here: jQuery returning "parsererror" for ajax request
Also I changed PHP fetch to:
if (mysqli_query($con, $sql)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($con);
}
$.ajax({
url: "update.php",
type: 'POST',
dataType: 'jsonp',
data: {key1: value1, key2: value2},
cache: false,
crossDomain: false,
error: function() {
$("#failUpload").removeClass("hide");
},
success: function(data) {
$("#succesUpload").removeClass("hide");
setTimeout(function() {
$("#succesUpload").addClass("hide");
}, 5000);
}
});
put crossDomain: false, and try with this.