从ajax请求获取未定义

时间:2013-02-04 21:25:29

标签: php javascript jquery ajax

  

可能重复:
  How to return AJAX response Text?
  How to return the response from an AJAX call from a function?

我试图根据我用ajax发送的值从SQL获取记录。但是当我在console.log中时,我得到的所有内容都是未定义的。

jQuery的:

function extraOptions(str){
    $.get("inc/ajax/extra_options.php",
        {q:str},
        function(html){
           return html;
        }
    );
}

$("#auto_model").change(function(){
   console.log(extraOptions(this.value));
});

extra_options.php:

$q = $_GET['q'];

echo extra_options($mysqli, $q);

extra_options函数:

function extra_options($mysqli, $q){
    $query = "SELECT
                                extra_options
                            FROM
                                vozila_tbl
                            WHERE
                                Model_vozila = '".$mysqli->real_escape_string($q)."'";
    $result = $mysqli->query($query);
    $row = $result->fetch_assoc();

    return $row['extra_options'];
}

编辑:

它应返回1或0,如果返回0,我想用if语句更改updateField函数。

function updateField(str, id, prevvalue, value, vehicletype){
    $.get("inc/ajax/form_rest.php",
        {q:str, prevvalue:prevvalue, value:value, vehicletype:vehicletype},
        function(html){
           $('#'+id).html(html);
        }
    );
}

$("#auto_model").change(function(){
   updateField(this.value, 'auto_bodywork', 3, 4, this.parentNode.id), resetBelow(2,'auto'), show('auto_bodywork');
});

我需要在if语句中更改的行是:

updateField(this.value, 'auto_bodywork', 3, 4, this.parentNode.id), resetBelow(2,'auto'), show('auto_bodywork');

1 个答案:

答案 0 :(得分:3)

您的return语句是从匿名函数返回的,而不是从extraOptions()返回的。因此,extraOptions()返回undefined,因为它什么也没有返回。

请改为尝试:

function extraOptions(str){
    $.get("inc/ajax/extra_options.php",
        {q:str},
        function(html){
           console.log(html);
        }
    );
}

$("#auto_model").change(function(){
   extraOptions(this.value);
});

如果我理解你的话,下面的代码应该做你想要的:

$("#auto_model").change(function(e) {
    extraOptions(this.value, this.parentNode.id);
});

function extraOptions(str, parentNodeId) {        
    $.get("inc/ajax/extra_options.php",
        {q:str},
        function(data) {
            if (data == "1") {
                updateField(str, "auto_bodywork", 3, 4, parentNodeId);
            } else if (data == "0") {
                updateField(str, "auto_type", 5, 7, parentNodeId);
            } else {
                //Not 0 or 1.
            }

            resetBelow(2, "auto");
            show("auto_bodywork");
        }
    );
}

function updateField(str, id, prevvalue, value, vehicletype){
    $.get("inc/ajax/form_rest.php",
        {q:str, prevvalue:prevvalue, value:value, vehicletype:vehicletype},
        function(html){
           $('#'+id).html(html);
        }
    );
}