Привет, ребята, у меня проблема с ответом от моего ajax. Если я покажу его в консоли. Я могу просмотреть его. Но как назначить его в переменной?
Вот что у меня есть. В моем PHP-коде у меня есть это
public function checkPassword($password){ $username = $this->session->userdata('username'); $validate = $this->members_model->checkPassword($password,$username); echo $validate; }
В моем jquery у меня есть это
$('#existing').on('keyup',function(){ var id = '<?php echo $this->session->userdata("user_id"); ?>'; var password_url = '<?php echo site_url("member/checkPassword/' +id+ '"); ?>'; $.ajax({ type: 'POST', url: password_url, data: '', dataType: 'json', success: function(response){ var g = response; if(g == 1){ $('#existing_info').html('Password is VALID'); //Doesn't display the VALID if the response is 1. Why? }else{ $('#existing_info').html('Password is INVALID!'); } } }); });
$.ajax({ type: 'POST', url: password_url, data: '', dataType: 'json', success: function(response){ var k=response; if(k.indexOf("1") != -1) $('#existing_info').html('Password is VALID'); else $('#existing_info').html('Password is INVALID!'); } });
response
– в переменной ответа функции успеха.
indexof возвращает индекс в вызывающем объекте String первого вхождения указанного значения, начиная поиск в fromIndex, возвращает -1, если значение не найдено .
попробуй что-нибудь вроде этого
<script> var k = null; $(function(){ $('#existing').on('keyup',function(){ var id = '<?php echo $this->session->userdata("user_id"); ?>'; var password_url = '<?php echo site_url("member/checkPassword/' +id+ '"); ?>'; $.ajax({ type: 'POST', url: password_url, data: '', dataType: 'json', success: function(response){ if(response == 1){ k = response; } } }); }); }) </script>
В вашем ответе на успех вы получите то, что вы настроили для вывода в php. Если вы хотите получить массив или набор данных, вы можете закодировать его в json в вашем php-скрипте, например
echo json_encode($validate);
Затем в вашем jquery вы можете использовать этот ответ, как это
var responseData = jQuery.parseJSON(response); console.log(responseData);
console.log будет печатать json-объект в консоли браузера. Вы можете использовать этот json-объект таким образом
responseData.some_data
Ajax является асинхронным, поэтому у вас будет доступ к нему после возврата метода ajax:
$('#existing').on('keyup',function(){ var id = '<?php echo $this->session->userdata("user_id"); ?>'; var password_url = '<?php echo site_url("member/checkPassword/' +id+ '"); ?>'; $.ajax({ type: 'POST', url: password_url, data: '', dataType: 'json' }).then(function(response){ var k; if(response == 1){ k = response; //call another function that needs k here } }); });
$.ajax({ type: 'POST', url: password_url, data: '', dataType: 'json', success: function(response){ k=response; } });
var k = null; $('#existing').on('keyup', function() { var id = '<?php echo $this->session->userdata("user_id"); ?>', password_url = '<?php echo site_url("member/checkPassword/' +id+ '"); ?>'; $.ajax({ type : 'POST', url : password_url, success : function(data) { if(data === '1') { k = data; } } }); });
сам параметр ответа содержит данные, поэтому просто назначьте это переменной и используйте его.
$.ajax({ type: 'POST', url: password_url, success: function(response){ if(parseInt(response) == 1){ var k = response; } } });
Ваши данные ответа находятся в переменной response
функции успеха. Поскольку тип ответа – json, вы можете назначить его непосредственно переменной javaScript.
Кроме того, вы не ошибаетесь, if(g == '1')
вместо if(g == 1)
. Вы получаете строку как ответ и проверяете равенство с числовым типом, который не будет равным ни в какой точке.
а именно: –
$.ajax({ type: 'POST', url: password_url, data: '', dataType: 'json', contentType:"application/json",// Add Content type too success: function(response){ k=response; } });
если ваш ответ json показан ниже
{"menu": { "id": "file", "value": "File", "popup": { "menuitem": [ {"value": "New", "onclick": "CreateNewDoc()"}, {"value": "Open", "onclick": "OpenDoc()"}, {"value": "Close", "onclick": "CloseDoc()"} ] } }}
вы можете получить доступ к массиву menuitem как
success: function(response){ k=response.menu.popup.menuitem; }