У меня есть вызов ajax, который запускается нажатием кнопки, но, несмотря на то, что все выглядит хорошо, иногда он перестает работать. Ошибка 500 Внутренний сервер, который является довольно широким, поэтому я попытался найти ошибку в своей функции, но пока безуспешно. Что-то не так с кодом?
Вот мой AJAX Call:
jQuery(document).ready( function($){
$('.modal-footer').on('click', '#tempsave_submit', function() {
//Loads all the variables to be sent
var source = $("#source-save").text();
var name = $("input[id='pname-save']").val();
var stage = $("input[id='pstage-save']").val();
//Checks to see if any of those variables are empty
if (source == null || name == null || stage == null)
{$("#failstat").text("Error Reference Number: 300");
$("#failsave").slideDown(100).delay(2000).slideUp(100);
}
//If they are all valid, it calls the ajax function
else{
$.ajax({
url: 'https://website.com/tempsave',
type: 'POST',
data: {
source_save: source,
pname_save: name,
pstage_save: stage
},
dataType : 'html',
timeout: 30000,
cache: false,
success: function () {
$("#successsave").slideDown(100).delay(2000).slideUp(100);
},
error: function (jqXHR, exception) {
$("#failstat").text("Error Reference Number: 343-" + jqXHR.status + exception);
$("#failsave").slideDown(100).delay(2000).slideUp(100);
}
});
}
});
});
А вот и целевой php:
if($_SERVER["REQUEST_METHOD"] == "POST")
{
$source = $_POST["source_save"];
$name = temp_input_check($_POST["pname_save"]);
$description = temp_input_check($_POST["pstage_save"]);
// tempsave_write() is a predefined function-no issues with this part
$fid = tempsave_write($source, $name);
// tempsave_save() is a predefined function-no issues with this part
$query = tempsave_save($name , $description , $fid);
}else{
$html = '
<h2>No Projects Were Found!</h2>
</div>
<p>Start by creating a new project. Your projects will be displayed here
once you submit them.</p>';
return $html;
}
Я проверил ответ, когда он выдал мне 500 Internal Error, и это был html, возвращенный из 'else'. Это означает, что сервер не отправил его как метод POST. Это возможно. @Taplan помог мне, и мы узнали, что метод был ПОЛУЧЕН! Как это возможно?
UPDATE:
Мне пришлось изменить некоторые части моего html-кода (не касались кодов, связанных с вызовом ajax), и теперь ajax отправляет его только методом GET, следовательно, выдает ошибку 500. Одним из отправляемых параметров является html исходный код, который был изменен и теперь отправляется как GET. Я попытался сузить его и обнаружил, что параметры даже не доступны как GET, хотя на странице написано, что они были отправлены как GET. Сейчас я уверен, что проблема связана с отправкой исходного кода HTML, но не знаю, что с ним не так. Любая помощь?