php - ajax请求未定义

标签 php javascript jquery ajax

Possible Duplicate:
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');

最佳答案

您的return语句是从匿名函数返回的,而不是从extraOptions()返回的。因此,extraOptions() 返回未定义,因为它没有返回任何内容。

试试这个:

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

关于php - ajax请求未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14695937/

相关文章:

php - 如何使用 mysql 并更新 autonum 字段在现有行之间插入新行

php - 来自mysql存储过程和php json_decode的正确格式的关联数组

php - PHP 有数据访问框架吗?

php - 使用 PHP 递归搜索目录中的文件并更改值

php - yii2:下拉选择字段

javascript - 保存页面上的所有 JavaScript 变量

javascript - if 语句返回 true,但条件不会触发

javascript - 是否可以使用 js 将照片发布到 facebook 上的用户供稿?

jQuery Slider 不适用于保存的图像

jquery - 分页数据表后,自定义类在输入类型复选框中不起作用