Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于JSON添加表行_Javascript_Php_Jquery_Mysql_Json - Fatal编程技术网

Javascript 基于JSON添加表行

Javascript 基于JSON添加表行,javascript,php,jquery,mysql,json,Javascript,Php,Jquery,Mysql,Json,我是JSON新手。我有一个选择框,上面有JavaScriptchange()trigger。我根据选择的值使用Ajax执行MySQL查询。查询结果将作为HTML表中的新行打印 但新行没有追加。我做错了什么 HTML <select id="orderAddProduct"> <option value=""></option> <option value="0001">Product 1</option> <

我是JSON新手。我有一个选择框,上面有JavaScript
change()
trigger。我根据选择的值使用Ajax执行MySQL查询。查询结果将作为HTML表中的新行打印

但新行没有追加。我做错了什么

HTML

<select id="orderAddProduct">
    <option value=""></option>
    <option value="0001">Product 1</option>
    <option value="0002">Product 2</option>
</select>

<table id="orderTable">
    <tr><th>ID</th><th>Name</th></tr>
</table>
变量名

function orderAddRow($item) {
                     ^^^^^^----
    var row = '<tr><td>'+value.id+'</td>'
                         ^^^^^----
函数orderAddRow($item){
^^^^^^----
变量行=“”+value.id+“”
^^^^^----
您定义了一个
$item
参数,但从未在函数中使用它。相反,这里有一个神秘的/未定义的

success: function (data) {
    alert("OK");
    orderAddRow(data);
},

您丢失了返回值。

好的,主要问题是我的代码中没有
JSON.parse()
函数。下面是我的最终工作代码

$("#orderAddProduct").change(function () {
    var element = $(this);
    var selectedValue = $(this).val();
    $.ajax({
        type: "GET",
        url: "orderAddProduct.php",
        data: {option : selectedValue},
        datatype: "json",
        success: function (response) {
            response = JSON.parse(response);
            if(response === undefined) {
                alert("undefined");
            } else {
                orderAddRow(response);
            }
        },
        error: function () {
            alert("ERROR");
        }
    });
    return false;
});

function orderAddRow($data) {
    $.each($data,function(index,value) {
        var row = '<tr><td>' + value.ID + '</td>'
            + '<td>' + value.name + '</td></tr>';
        $('#orderTable').append(row);
    });
}
$(“#orderAddProduct”).change(函数(){
var元素=$(此);
var selectedValue=$(this.val();
$.ajax({
键入:“获取”,
url:“orderAddProduct.php”,
数据:{选项:selectedValue},
数据类型:“json”,
成功:功能(响应){
response=JSON.parse(response);
如果(响应===未定义){
警报(“未定义”);
}否则{
orderAddRow(响应);
}
},
错误:函数(){
警报(“错误”);
}
});
返回false;
});
函数orderAddRow($data){
$。每个($数据、函数(索引、值){
变量行=“”+value.ID+“”
+''+value.name+'';
$('#orderTable')。追加(行);
});
}

我刚刚忘记了一个代码块…对不起-我将把这些行添加到我的问题中…是否显示了
警报(“OK”)
呢?您是否检查了变量
数据
是否包含您希望它包含的内容(例如使用
控制台.log(数据)
)?控制台日志中有任何错误吗?
每个
循环是否按您认为的方式执行(通过在其中放入
console.log
进行检查)?@Anders,是的,
警报(“确定”)
显示正确。我刚刚编辑了代码并添加了
console.log(数据)
,请查看我问题中的错误消息。
selectedValue
是未定义的索引…我应该怎么做?如果您标记第21行会有所帮助。@Anders,我使用的是
$\u REQUEST['selectedValue']
而不是
$\u REQUEST['option']
,这是正确的。现在所有其他内容(json)可以,但没有行追加。我认为问题出在
orderAddRow()
函数中
success: function (data) {
    alert("OK");
    orderAddRow(data);
},
$("#orderAddProduct").change(function () {
    var element = $(this);
    var selectedValue = $(this).val();
    $.ajax({
        type: "GET",
        url: "orderAddProduct.php",
        data: {option : selectedValue},
        datatype: "json",
        success: function (response) {
            response = JSON.parse(response);
            if(response === undefined) {
                alert("undefined");
            } else {
                orderAddRow(response);
            }
        },
        error: function () {
            alert("ERROR");
        }
    });
    return false;
});

function orderAddRow($data) {
    $.each($data,function(index,value) {
        var row = '<tr><td>' + value.ID + '</td>'
            + '<td>' + value.name + '</td></tr>';
        $('#orderTable').append(row);
    });
}