jQuery - Почему всегда вызывается обратный вызов ошибки Ajax ()? - PullRequest
2 голосов
/ 29 мая 2011

Я пытаюсь вернуть объект подтверждения JSON обратно в мою функцию AJAX. По какой-то причине, даже если сообщение успешно (200), всегда вызывается функция обратного вызова ошибки. Я записываю возвращаемый JSON в файл для перезаписи, и он выглядит правильно. Я не могу понять, почему это происходит. Может кто-нибудь предложить предложение?

Действие контроллера PHP (CI):

public function sendMail()
    {
        $senderName = trim($_POST['senderName']);
        $returnEmail = trim($_POST['returnEmail']);
        $message = trim($_POST['message']);


        if (valid_email($returnEmail))
        {
            send_email('email@email.com','Website Email From: '.$senderName, $message);
            $success = array('success'=>'Mail Sent');

            //Debugging to file
            $myFile = "testFile.txt";
            $fh = fopen($myFile, 'w') or die("can't open file");
            $stringData = json_encode($success);
            fwrite($fh, $stringData);
            fclose($fh);


            echo json_encode($success);
        }
        else
        {
            $errorMessage = array('error'=>'Invalid Email Address');
            echo json_encode($errorMessage);
        }
    }

}

JS:

$.ajax({
                   type: "POST",
                   url: "http://domain.com/index.php/mail/sendmail",
                   data: {senderName: senderName, returnEmail: senderAddr, message: message },
                   dataType: "JSON",
                   success: function(msg){
                     console.log(msg);
                   },
                   error: function(data){
                        alert("Something went wrong"); // possible that JSON wasn't returned
                    }
                 });

Ответы [ 2 ]

4 голосов
/ 29 мая 2011

Проблема была в том, что я не использовал относительный URL для цели.Я считаю, что проблема была междоменной проблемой сценариев.Я изменил свойство url на index.php / mail / sendmail и все хорошо.

$.ajax({
               type: "POST",
               url: "index.php/mail/sendmail",
               data: {senderName: senderName, returnEmail: senderAddr, message: message },
               dataType: "JSON",
               success: function(msg){
                 console.log(msg);
               },
               error:function (xhr, ajaxOptions, thrownError){
                    var x = xhr;
                    var y = ajaxOptions;
                    var z = thrownError;
                }
             });
0 голосов
/ 29 мая 2011

Обратный вызов error принимает до трех аргументов: объект XHR, строку ошибки и необязательный объект исключения. Примите и последние два, и они должны рассказать вам, что происходит.

Возможно, вы также захотите использовать отладчик, например Firebug, Dragonfly или инструменты разработчика Chrome, чтобы проверить, насколько успешен ваш запрос.

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