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 に答える