2015-08-19 3 views
6

Я объявил success и error обратные вызовы, но в случае кода состояния 200 также он вызывает только обратный вызов ошибок.AJAX: только обратный вызов ошибки был уволен

Я делаю завиток для другого php файл тоже внутри registry.php.

Вот то, что я пробовал:

$.ajax({ 
    type: "POST" 
    ,data: { 
    action: "blah" 
    ,mobileNo: that.mobNo 
    ,token: that.key 
    } 
    ,url: "http://90.8.41.232/localhost/registry.php" 
    ,cache: false 
    ,dataType: "json" 
    ,success: function (response) { 
    console.log("success"); 
    } 
    ,error: function() { 
    console.log("error"); 
    } 
}); 

Я прочитал в документации, что мы не должны называть успеха обратного вызова в явном виде, надеюсь, что это правильно.

Любая идея, как вызвать обратный вызов успеха, когда это код состояния 200.

ОТВЕТ надеюсь, что это поможет, это я скопировал из хром-консоли, а не распечатал console.log().

bort: (statusText) 
always:() 
complete:() 
done:() 
error:() 
fail:() 
getAllResponseHeaders:() 
getResponseHeader: (key) 
overrideMimeType: (type) 
pipe:() 
progress:() 
promise: (obj) 
readyState: 4 
responseText: "{"success":"Mobile No 9535746622 is approved"}  {"report":true}" 
setRequestHeader: (name,value) 
state:() 
status: 200 
statusCode: (map) 
statusText: "OK" 
success:() 
then:() 
+2

Ваш код выглядит правильно, ответ с сервера действителен json? – aghidini

+0

Вы уверены, что 'http: // 90.8.41.232/localhost/registry.php' не является доступом к перекрестным данным? если это так, то вам может потребоваться включить cors в registry.php, предоставив определенные заголовки, а также вам нужно проверить «jsonp» для доступа к данным перекрестного домена. – Jai

+0

Функция ошибки принимает три аргумента. Посмотрите на них, они, вероятно, скажут вам, что не так. В консоли ошибок JavaScript также могут отображаться ошибки. Вкладка «Сеть» ваших инструментов разработчика позволит вам подтвердить, есть ли у вас код ответа 200 OK в ответе, вы проверили его? – Quentin

ответ

2

Как вы уже упоминали, что вы делаете curl вызов какой-либо другой php, что происходит, когда вы делаете curl звоните, вы должны вернуть ответ curl клиенту. Таким образом, чтобы передать значение returncurl, вы должны установить опцию curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);. Это сортирует вашу проблему. Надеюсь на это.

+0

awesome ... он работал благодаря – PJ1405

2

Во-первых, проверка реальной ошибки вы получаете (не уверен, что вы действительно получите 200 статус?)

error: function (err) { 
    console.error("error"); 
    console.log(err); 
    console.log(err.stack); 
    throw err; 
} 

Покажите нам полученный журнал пожалуйста.

+0

Я добавил объект ответа, там код состояния '200' n' ok'. – PJ1405

+0

Пожалуйста, поставьте console.log (err); Это похоже на то, что вы увидите брошенные ошибки подробности –

-2

Я сделал это несколько недель назад, и для меня это работает, если я называю это как

$.ajax(
{ 
    type: "POST", 
    data: { action: "blah", mobileNo: that.mobNo, token: that.key }, 
    url: "http://90.8.41.232/localhost/registry.php", 
    cache: false, 
    dataType: json, 
}) 
.success (function (data, status, jqxhr) 
{ 
    // do your stuff 
}) 
.error (function(x, status, jqxhr) 
{ 
    // handle your errors 
}); 
Смежные вопросы