2015-12-31 4 views
0

enter image description here Это обновление основано на ответе, но у меня все еще есть проблема.Получение другого результата кода на разных серверах

var dataString = $("#acc_form").serialize(); 
var action = $("#acc_form").attr('action'); 

$.ajax({ 
type: "POST", 
dataType:"JSON", 
url: action, 
data: dataString, 
success: function(res){ 
       if(res.status === 'error'){ 
        console.log('Error!!!'); 
       } else{ 
        console.log('Success!!!'); 
       } 
      } 


}); 

Здесь я делаю чек, а также где я смущен. мое другое заявление выглядит неправильно.

$desired_email = strip_tags(@$_POST['email']); 
$email_exist_check = mysqli_query($connect, "SELECT * FROM accounts WHERE email='$desired_email'") or die(mysql_error()); 
$email_exist = mysqli_num_rows($email_exist_check); 
if ($email_exist == 0) { 
    //performs insert query 

    } else { 

header('Content-type: application/json');   
$res['status'] = 'error';  

echo json_encode($res); 

      } 

Любая помощь с благодарностью. Я новичок в jQuery и ajax и с помощью json

+0

Показать полный код, иначе люди просто возьмут удар в темноте на ваш 'if (// email does not exist) {....' код, поскольку я предполагаю, что это условие, которое возвращает 'success'. – Darren

+0

Я добавил дополнительную информацию. надеюсь, это поможет. должен ли я вернуть 1 в выражении if? – user3813156

+0

Вы уверены, что ваш запрос не подводит? Что такое '$ wish_email' ...? – Darren

ответ

0

Поскольку вы вернули массив json, даже проверка электронной почты недействительна. Вам необходимо обработать данные ответа в случае успеха функции ajax. Обратный вызов ошибки работает только тогда, когда сервер возвращает код состояния в заголовке (он не является статусом в данных ответа), я назвал его Решение 1. В Решение 2, я решаю его, возвращая заголовок в PHP-коде.

Решение 1: Решите его на клиенте (JavaScript)

//... 
success: function(res){ 
// Use json parse method to parse the response data if it is string. 
// If you have been to set dataType: 'json', it's ok. Can ignore this comment & code. 
// res = JSON.parse(res); 

status = res.status; 

if(status == 'error'){ 
//Process the error in here 
} 
} 
//... 

Полнофункциональный Аякса пример:

$.ajax({ 
       url: 'index.php', 
       data: {email: '[email protected]'}, 
       method: 'POST', 
       dataType: 'json', 
       success: function(res){ 
        if(res.status === 'error'){ 
         console.log('Error!!!'); 
        } else{ 
         console.log('Success!!!'); 
        } 
       } 
      }); 

Это работает на моем рабочем месте!

My development Network tab on Chrome

Решение 2: Решить его на сервере (PHP)

// Add it to before `echo` line 
header($_SERVER['SERVER_PROTOCOL'] . ' 500 Internal Server Error', true, 500); 

Вам нужно только выбрать один раз в обоих. Удачи!

Извините, потому что мой английский не очень хорошо.

+0

я пошел с решением 1, и я все еще смущен. можете ли вы взглянуть на мое редактирование? – user3813156

+0

, пожалуйста, полный код функции ajax – Vuong

+0

Я добавил полный пример функции ajax. Пожалуйста, сосредоточьте его. – Vuong

Смежные вопросы