【问题标题】:Setting a array from post to public array将数组从帖子设置为公共数组
【发布时间】:2013-03-17 14:21:57
【问题描述】:

我的脚本有问题

问题是,如果我有一个通过 post 获得的 json 数组并且我想 将其设置为公共数组,以便我可以在我的函数之外使用它。 这是我的代码。

HTML代码:

<input name="myValue">

jQuery 代码:

var myArray = newArray(); 

$(document).ready(function(){

   $('input[name="myValue"]').foucusout(function(){
     var postValue = $(this).val();
     $.post('myPhp.php',{post:postValue},function(data){

      var JsonArray = $.parseJSON(data);
          myArray = JsonArray;
     };

}):

PHP 代码;

<?

if(isset($_POST["post"])){

$myVal = $_POST["post"];

$db = mysql_query("SELECT * FROM parts WHERE code = '$myVal'");
$result = mysql_fetch_array($db);

echo json_encode($result); 
}    
?>

这不是设置 myArray。 我做错了什么?

编辑

jQuery 代码:

var myArray = new Array();
$(document).ready(function(e) {


   $('input[name=myValue]').focusout(function(e) {
        var myPost = $(this).val();
        $.post('myPhp.php',{part:myPost},function(data){
                myArray = $.parseJSON(data);
                alert(myArray[2]);
            });
    });

    $('button[name=getArrayValue]').on("click",function(){
            alert(myArray[3]);
        });
});

HTML 代码

<input name="myValue">
<button name="getArrayValue">Get</button>

当我关注输入字段时,我从数组中获取第二个值的警报,当我按下按钮时,我从第三个数组位置获取值。 所以它现在正在工作。

感谢大家的帮助。

【问题讨论】:

  • 您正在使用已弃用的库和 sql-injection 易受攻击的代码
  • 控制台有错误吗?任何 PHP 错误?你确定 MySQL 查询实际上是在选择什么吗?
  • 在查询之前您甚至没有连接到数据库。
  • 我将数据发送到我的 jquery,如果我在帖子中提醒 JsonArry,我会看到我从 php 获得的数据,但如果我在 postfuncrion 之外提醒 myArray,我会得到未定义。
  • 你把那个警告声明分别放在了哪里什么时候你叫它...?

标签: php jquery http-post json


【解决方案1】:

在查询数据库之前,您不会连接到数据库。如果您没有连接到数据库,查询如何选择某些内容?

在查询之前添加:

$username = //your DB username
$password = //your DB password

mysql_connect("localhost", $username, $password);

您确实应该使用未弃用的 API,例如 PDO 或 MySQLi。

编辑:

这很简单:AJAX 调用是异步的,因此在运行 focusout 处理程序后会设置数组。这就是焦点输出时发生的情况:

  1. focusout 处理程序被调用
  2. 您告诉 jQuery 进行 AJAX 调用并提供一个函数,该函数应在 AJAX 请求完成时运行。
  3. focusout 处理程序完成并尝试提醒 尚未设置的数组
  4. AJAX 请求完成,jQuery 调用您提供的函数。
  5. 然后设置数组,在你的焦点处理程序之后很久。

【讨论】:

  • 这不是我遇到的问题,我确实从 php 获取数组
  • 啊。你是如何验证的? @NamirDžilić
  • 如果我在 post 函数中提醒我的 JsonArray,我可以在我的屏幕上看到数据,但如果我在 foucusout 函数之外提醒 myArray,我会得到未定义。真正的代码不易受攻击这是代码的简单版本。但我认为这应该将 myArray 设置为 JsonArray。
  • 啊,现在我知道怎么了。让我编辑一下。 @NamirDžilić
  • 我不知道我做了什么,但它现在可以工作了。我会将我刚刚制作的代码添加到源代码中。
猜你喜欢
  • 2014-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
相关资源
最近更新 更多