Jak uzyskać odpowiedź Ajax od sukcesu i przypisać ją do zmiennej za pomocą jQuery?


Cześć, mam problem z uzyskaniem odpowiedzi od mojego Ajaxa. Jeśli pokażę to w konsoli. Mogę oglądać. Ale jak mogę przypisać to do zmiennej?
Oto co mam.
W moim kodzie PHP mam to
public function checkPassword($password){ $username = $this->session->userdata('username');
$validate = $this->members_model->checkPassword($password,$username); echo $validate;}

W moim jQuery mam to
$('#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!');
} } }); });

Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

$.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
to zmienna odpowiedzi funkcji sukcesu.

indexof

https://developer.mozilla.org/ ... dexOf
zwraca indeks w obiekcie ciągu wywołującego pierwszego wystąpienia określonej wartości, rozpoczynając wyszukiwanie od fromIndex,

zwraca -1, jeśli nie znaleziono żadnej wartości

.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

spróbuj czegoś takiego
<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>
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

W odpowiedzi na sukces otrzymasz to, co powinieneś wydrukować w php.
Jeśli chcesz uzyskać tablicę lub zestaw danych, możesz zakodować go do json w swoim skrypcie php, takim jak
echo json_encode($validate);

Następnie w swoim jquery możesz użyć tej odpowiedzi w ten sposób
var responseData = jQuery.parseJSON(response);
console.log(responseData);

console.log wydrukuje obiekt json na konsoli przeglądarki.
Możesz użyć tego obiektu json w ten sposób
responseData.some_data
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Ajax jest asynchroniczny, więc będziesz mieć do niego dostęp po zwróceniu metody 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
}
});
});
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

$.ajax({
type: 'POST',
url: password_url,
data: '',
dataType: 'json',
success: function(response){ k=response; } });
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Twoje dane odpowiedzi znajdują się w zmiennej
response
funkcji sukcesu. Ponieważ typ odpowiedzi to json, można go przypisać bezpośrednio do zmiennej javaScript.
Poza tym porównanie jest błędne, wypróbuj
if (g == '1')
zamiast
if (g == 1)
. Otrzymujesz ciąg jako odpowiedź i sprawdzasz równość typem liczbowym, który nie będzie równy w żadnym momencie.
te.:-
$.ajax({
type: 'POST',
url: password_url,
data: '',
dataType: 'json',
contentType:"application/json",// Add Content type too
success: function(response){
k=response;
}
});

jeśli twoja odpowiedź json wygląda jak poniżej
{"menu": {
"id": "file",
"value": "File",
"popup": {
"menuitem": [
{"value": "New", "onclick": "CreateNewDoc()"},
{"value": "Open", "onclick": "OpenDoc()"},
{"value": "Close", "onclick": "CloseDoc()"}
]
}
}}

możesz uzyskać dostęp do menu wyboru jako
success: function(response){
k=response.menu.popup.menuitem;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

sam parametr odpowiedzi zawiera dane, więc po prostu przypisz go do zmiennej i użyj go.
$.ajax({
type: 'POST',
url: password_url,
success: function(response){
if(parseInt(response) == 1){
var k = response;
}
}
});
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

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;
}
}
});
});
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz utworzyć pustą tablicę js i przypisać ją do tej samej tablicy.
var resp = [];
jQuery.ajax({
dataType: "json",
method: 'post',
url: 'ajax.php',
async: false,
data: {postData: 'postData'},
success: function(data){
resp.push(data);
}
});
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nazwa pliku votepost.php
<?php
include("domain.php");$csid=$_POST['CSID'];
$voteid=$_POST['VOTEID'];
$myid=$_POST['MYID'];
$usertype=$_POST['USERTYPE'];
$myurl =URL."putvote.php?csid=".$csid."&voterid=".$myid."&voteid=".$voteid."&usertype=".$usertype;
$myurl=str_replace(" ","%20",$myurl);
$jsondata = file_get_contents($myurl);
$data = json_decode($jsondata);if($data->response=="true")
{
echo 'true';}
else
{
echo 'false';}
?>

ajax reponse use $. trim for IF ELSE
$.post("votepost.php", {CSID:csid,VOTEID:voteid,MYID:myid,USERTYPE:usertype}, function (data) { if($.trim(data)=='true')
{
alert('ok');
}
else
{
alert('error');
}
});

Mam nadzieję, że rozwiążesz swój problem

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się