Ajax Call иногда терпит неудачу - PullRequest
0 голосов
/ 16 мая 2018

У меня есть вызов 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, но не знаю, что с ним не так. Любая помощь?

1 Ответ

0 голосов
/ 16 мая 2018

Единственное, что я вижу неправильно, это использование "type" в вашем блоке вызова ajax вместо "method".Смотрите здесь: http://api.jquery.com/jquery.ajax/

Ваш код должен выглядеть следующим образом:

$.ajax({
  url: 'https://website.com/tempsave',
  method: 'POST',
  data: {
    source_save: source,
    pname_save: name,
    pstage_save: stage

  },
  dataType : 'html',
  timeout: 30000,
  cache: false,
  success: function (response) {
    $("#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);

  }

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...