Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.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
使用AJAX将javascript数组传输到PHP_Php_Javascript_Ajax - Fatal编程技术网

使用AJAX将javascript数组传输到PHP

使用AJAX将javascript数组传输到PHP,php,javascript,ajax,Php,Javascript,Ajax,我在这里收到了制作邀请功能的帮助。在基于AJAX的搜索框中,可以邀请团队。搜索团队时,找到它然后选择它-团队将存储在一个数组中。但是,我需要PHP中的数组数据 我的问题:我可以使用AJAX将javascript数组传输到PHP吗?下面可以看到代码。AJAX部分是使用jQuery制作的 //AJAX based search var $j = jQuery.noConflict(); $j(document).ready(function(){ $j("#search_results").

我在这里收到了制作邀请功能的帮助。在基于AJAX的搜索框中,可以邀请团队。搜索团队时,找到它然后选择它-团队将存储在一个数组中。但是,我需要PHP中的数组数据

我的问题:我可以使用AJAX将javascript数组传输到PHP吗?下面可以看到代码。AJAX部分是使用jQuery制作的

//AJAX based search
var $j = jQuery.noConflict();
$j(document).ready(function(){
    $j("#search_results").slideUp();
    $j("#button_find").click(function(event){
        event.preventDefault();
        search_ajax_way();
    });
    $j("#search_query").keyup(function(event){
        event.preventDefault();
        search_ajax_way();
    });
});

function search_ajax_way(){
    $j("#search_results").show();
    var search_this=$j("#search_query").val();
    $j.post("search_team.php", {searchit : search_this}, function(data){
        $j("#display_results").html(data);
    })
}
// <----- AJAX search ends ------>

//Add-remove teams

//Functional object for team
var Team = function (id, name) {
    this.name = name;
    this.id = id;
}

//Array which will contain teams
var TeamList = [];

//Checking if the team is already added
function containsTeam(id) {
    for (var i = 0; i < TeamList.length; i++) {
        if (TeamList[i].id == id) {
            return true;
        }
    }
    return false;
}

// Removed team by onclick-event
function removeTeam(id) {
    for (var i = 0; i < TeamList.length; i++) {
        if (TeamList[i].id == id) {
            TeamList.splice(i, 1);
            document.getElementById('teams').removeChild(document.getElementById('ta'+id));
        }
    }
}

function addTeam(tid) {
    // Grab the input value
    var teamName = document.getElementById(tid).innerHTML;
    var teamID = document.getElementById(tid).id;

    // If empty value
    if(!teamName || !teamID) {
        alert('An error occured.');
    } else {
        if(containsTeam(teamID) == false) {
            TeamList.push(new Team(teamID, teamName));

            // Create the teams with the value as innerHTML
            var div = document.createElement('div');
            div.className = 'team-to-invite';
            div.setAttribute('onclick', 'removeTeam('+teamID+')');
            div.onclick = function() { removeTeam(teamID) };
            div.id = 'ta' + teamID;
            div.innerHTML = teamName;

            // Append it and attach the event (via onclick)
            var teams = document.querySelector('#teams').getElementsByTagName('div');
            document.querySelector('#teams').appendChild(div);
        }
    }
    return false;
}
//基于AJAX的搜索
var$j=jQuery.noConflict();
$j(文档).ready(函数(){
$j(“#搜索结果”).slideUp();
$j(“按钮查找”)。单击(函数(事件){
event.preventDefault();
搜索方式();
});
$j(“搜索查询”).keyup(函数(事件){
event.preventDefault();
搜索方式();
});
});
函数搜索\u ajax\u way(){
$j(“#搜索结果”).show();
var search_this=$j(“#search_query”).val();
$j.post(“search_team.php”,{searchit:search_this},函数(数据){
$j(“#显示结果”).html(数据);
})
}
// 
//添加和删除团队
//团队的功能对象
var团队=功能(id、名称){
this.name=名称;
this.id=id;
}
//将包含团队的数组
var TeamList=[];
//检查团队是否已添加
功能模块(id){
对于(变量i=0;i
团队存储在TeamList()中


提前感谢。

目前最好的方法是将数组编码为字符串,这是可以发布到PHP脚本的唯一格式

JSON编码是目前通过internet发送此类数据的最流行标准。以下是一些编码数据的示例:

{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}
通常,您将使用jQuery的JSON编码对数组进行编码,将这些数据发布到PHP脚本中,然后在PHP端对其进行解码

使用jQuery发布数组

var dataToSend = { 
    data: TeamList
};
jQuery.ajax({
    type: 'POST',
    url: "myPhp.php",
    data: JSON.stringify(dataToSend),
    dataType: "json",
    success: function(data){ alert(data); }
});
PHP解码JSON

<?php
$foo = file_get_contents("php://input");
$decoded = json_decode($foo, true);
var_dump($decoded); //Print out the data
$myArray = $foo => data;

我可以将javascript数组传输到PHP吗


您只能将字符串从执行javascript的浏览器传输到执行php的服务器。但是有一些公认的字符串格式,例如json,可以转换为数组等。

您的问题的答案是,可以使用AJAX将javascript中的数据数组发送到服务器端脚本。您对代码的某个特定部分有问题吗?我首先想确认在我的情况下这是可能的。我对json的全部内容都很熟悉,在这种情况下这样做似乎是合适的。我试过你的代码,但似乎什么都没发生。我制作了一个“send_data”函数,在提交表单时调用该函数(onclick事件)。然后我把你建议的数据放在发送数据函数中。现在,可以接收与脚本相同文件中的数据并填充数据了吗?我在create_cup.php中填写字段并邀请团队。我的代码只是一个示例,向您展示如何传输数据。如您所见,在javascript中,您创建了一个包含“数据”的数据对象,其中包含TeamList数组中任何内容的内容。请注意,它正在将其发布到myPhp.php-将其更改为您的php脚本。我建议用一个简单的方法测试一下,这样你就可以确保你的数据发布正确。当您返回数据时,应该会看到一个警报,其中只有我显示的代码应该是您的数据对象。我举了一个简单的例子。但是,没有出现任何警报。@hskrijelj并且您希望myPhp.php存在于JSFIDLE上?没有,一点也没有。我只是想给你看看我的索引文件。myPhp.php放在本地主机上,其中包含用于解码JSON的代码。我的firebug实际上通知已经进行了AJAX调用。但为什么没有出现警报?