0

可能重复:
如何返回 AJAX 响应文本?
如何从函数的 AJAX 调用返回响应?

我正在尝试根据我使用 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');
4

1 回答 1

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);
        }
    );
}
于 2013-02-04T21:29:49.267 回答