如何将Javascript数组值传递给PHP,然后用这个值发送MySQL查询


How to pass Javascript array value to PHP and then send MySQL query with this value?


正如我在标题中提到的,如何将JS数组值传递给PHP,然后使用mysqli发送它

以下函数将有助于获取稍后发送的值

function getPlayerName() {
    return player.Name;
}
function getPlayerClass() {
    return player.Class;
}
function getPlayerLevel() {
    return player.Level;
}

对我来说,最重要的是如何将这些数组传递给PHP

@编辑
我使用store.js来保存玩家数组的值(Local Storrage(。这是一个在新玩家创建时保存它的功能

function saveData(){
    var playerName = document.getElementById('nickname');
    var warriorClass = document.getElementById('warrior');
    var mageClass = document.getElementById('mage');
    var archerClass = document.getElementById('archer');
    if(warriorClass.checked){
        store.set('player', {
            Name: playerName.value,
            Class: 'Warrior',
            Level: playerLevel,
            XP: playerXP,
            HP: playerHP,
            MaxHP: playerMaxHP
        });
    }
    else if(mageClass.checked){
        store.set('player', {
            Name: playerName.value,
            Class: 'Mage',
            Level: playerLevel,
            XP: playerXP,
            HP: playerHP,
            MaxHP: playerMaxHP
        });
    }
    else if(archerClass.checked){
        store.set('player', {
            Name: playerName.value,
            Class: 'Archer',
            Level: playerLevel,
            XP: playerXP,
            HP: playerHP,
            MaxHP: playerMaxHP
        });
    }
}


@第2版
根据Skamielina的建议,我做了这样的事情:

$.ajax({
      method: "POST",
      url: "top15.php",
      data: { Name: player.Name, Class: player.Class, Level: player.Level }
    })

top15.6.php具有以下特性:

<?php
        echo 'Name: ' . $_POST['Name'] . '<br/>';
        echo 'Level: ' . $_POST['Level'] . '<br/>';
        echo 'Class: ' . $_POST['Class'] . '<br/>';
?>

现在,在网页上是

Name: 
Level: 
Class: 

但是,FireBug控制台显示

Name: Oen<br/>Level: 1<br/>Class: Mage<br/> 


愚蠢的我…不是数组,我指的是变量。天啊,对不起这个错误:x

使用jQuery和$.ajax函数(请参阅文档(:

$.ajax({
  method: "POST",
  url: "some.php",
  data: { name: player.Name, class: player.Class, level: player.Level }
})

接下来,您需要有一个php文件来处理来自浏览器的请求,并最终返回结果。

您需要使用AJAX将其发送到服务器,并在服务器上使用PHP和mysqli((进行处理。根据您使用的内容,有很多库可以发出XHR请求,看看JQuery,它可能是最容易使用的。

创建一个新的php页面,通过GET或POST参数获取NameClassLevel信息:

$name = $_GET/$POST["Name"];

然后,使用mysqli将这些信息存储在数据库中。最后,使用jqueryajax与此页面进行通信。

嗨,你的问题对很多内容都很开放,你需要在发布stackoverflow 之前尝试搜索一下

要将javascript数据发送到php,必须使用Ajax然后,在php中,您可以执行任何想要选择、插入、更新或任何需要的操作。
我建议您使用jQuery框架,并为您添加一个Ajax web crud web应用程序教程。

http://www.ibm.com/developerworks/library/os-php-jquery-ajax/

希望对你有帮助。

不带JQuery 的Ajax
function yourFunction(str){
   if (window.XMLHttpRequest) {
                // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            } else {
                // code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                    document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
                }
            }
            xmlhttp.open("GET","yourPhp.php?q="+str,true);
            xmlhttp.send();
}
}

并在您的php.php中获取您的价值

$q.=$_获取['q'];

我不清楚结果是数组还是需要将其作为数组传递。正如其他人已经说过的,最好的方法是使用Ajax和Jquery。如果你需要将它们作为数组传递,请检查这个小提琴。

var player = new players("pippo","something",12);
var array_php = new Array();
array_php["name"] = getPlayerName(player);
array_php["Class"] = getPlayerClass(player);
array_php["level"] = getPlayerLevel(player);
//pass it to php file with jquery
$.ajax({
  method: "POST",
  url: "/echo/html/", //user your own file.php
  data: { array:array_php }
}).done(function() {
 alert("uploaded");
});

对不起,我指的是变量而不是数组。我糟糕的解决方案比我想象的要容易得多。

<?php
        echo '<script>';
        echo "var player = store.get('player')";
        echo '</script>';
        echo "Name: <script> document.writeln(player.Name)</script><br/>";
        echo "Level: <script> document.writeln(player.Level)</script><br/>";
        echo "Class: <script> document.writeln(player.Class)</script><br/>";
?>