如何从成功中获取ajax响应并使用jQuery将其分配给变量?

时间:2013-12-05 06:32:26

标签: javascript php jquery ajax

大家好我从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!');
                }

                }

            });

        });

10 个答案:

答案 0 :(得分:4)

$.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

答案 1 :(得分:3)

尝试这样的事情

   <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>

答案 2 :(得分:2)

在您的成功回复中,您将获得在php中输出的内容。 如果你想获得一个数组或数据集,可以在你的php脚本中用json编码,如

echo json_encode($validate);

然后在你的jquery中你可以像这样使用这个响应

var responseData = jQuery.parseJSON(response);
console.log(responseData);

console.log将在浏览器控制台中打印json对象。 您可以像这样使用这个json对象

responseData.some_data

答案 3 :(得分:2)

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
              }
            });
        });

答案 4 :(得分:1)

 $.ajax({
            type: 'POST',
            url: password_url,
            data: '',
            dataType: 'json',
            success: function(response){

               k=response;

            }

        });

答案 5 :(得分:1)

您的回复数据位于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;
            }

答案 6 :(得分:1)

响应参数本身包含数据,因此只需将其分配给变量并使用它。

 $.ajax({
        type: 'POST',
        url: password_url,
        success: function(response){
         if(parseInt(response) == 1){ 
          var k = response;
          }
        }
    });

答案 7 :(得分:1)

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;
      }
    }
  });
});

答案 8 :(得分:0)

文件名称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响应使用$ .trim作为IF ELSE

$.post("votepost.php", {CSID:csid,VOTEID:voteid,MYID:myid,USERTYPE:usertype}, function (data) {

        if($.trim(data)=='true')
        {
            alert('ok');
        }
        else
        {
            alert('error');
        }
    });

我希望你能解决问题

答案 9 :(得分:0)

您可以创建js空白数组并将其分配给同一个数组。

var resp = [];
    jQuery.ajax({
            dataType: "json",
            method: 'post',
            url: 'ajax.php',
            async: false,
            data: {postData: 'postData'},
            success: function(data){
                resp.push(data);
            }
    });