1

我在以前的帖子中寻找过这个,如果得到了回答,我深表歉意。我的 javascript 如下,其中 data 参数是一个字符串,它引用 MySQL 数据库中的一个表:

    getData("UKnatgas");

function getData(data){
$.getJSON("service.php?action="+data, function(json) {              
    $.each(json.UKnatgas,function() {
       var info = this.UKnatgas;                    
                $('#UKnatgas').append( info );
    });
});
}

首先,我想将字符串“UKnatgas”传递到子 $.each 函数中,这样它就会显示为:

$.each(json.data,function() {
       var info = this.data;                    
                $('#data').append( info );
    });

但这不起作用?你能告诉我为什么吗?

第二部分是在 php 文件中删除所有“UKnatgas”实例:

  if($_GET){
if($_GET['action'] == 'UKnatgas'){
    $query = "SELECT UKnatgas FROM UKnatgas order by Date DESC Limit 1 ";
    $result = db_connection($query);

    $UKnatgas = array();

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        array_push($UKnatgas, array('UKnatgas' => $row['UKnatgas']));
    }
    echo json_encode(array("UKnatgas" => $UKnatgas));
    exit;
    }
}

总而言之,我想用一个字符串初始化函数 getData(data),该字符串传播到 javascript 函数,然后是 php 文件。这可能吗?

谢谢!

4

1 回答 1

0

PHP 很简单,虽然我会允许某种类型的错误检查,甚至可能会在您放置用户可编辑字符串时检查黑客尝试。这可能允许MySQL Injection所以要小心。

如果可以,请mysql_real_escape_string尽可能使用。有关更多信息,请参见链接:http ://www.php.net/manual/en/function.mysql-real-escape-string.php

if($_GET['action']){
    $query = "SELECT `".$_GET['action']."` FROM `".$_GET['action']."` order by Date DESC Limit 1 ";
    $result = db_connection($query);

    $actionArray = array();

    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
        array_push($actionArray, array($_GET['action'] => $row[$_GET['action']]));
    }
    echo json_encode(array($_GET['action'] => $actionArray));
    exit;
}

并不确定,但这应该适用于 JSON

$.each(json, function(key, val) {
    $('#'+data).append( val );
});

http://api.jquery.com/jQuery.getJSON/

我在您的案例中对其进行了测试,您需要执行以下操作才能访问数据。现在这是使用 JSON 作为关联数组,它不是,但不是 100% 如何做到这一点。

function getData(data) { 
    $.getJSON("service.php?action="+data, function(json) { 
        $.each(json[data], function() { 
            var info = this[data];
            $('#'+data).append( info ); 
        }); 
    });
}
于 2012-05-01T20:36:08.603 回答