Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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 如何使用ajax jQuery将数据发布到php文件并将其保存在json文件中?_Javascript_Php_Jquery_Ajax_Json - Fatal编程技术网

Javascript 如何使用ajax jQuery将数据发布到php文件并将其保存在json文件中?

Javascript 如何使用ajax jQuery将数据发布到php文件并将其保存在json文件中?,javascript,php,jquery,ajax,json,Javascript,Php,Jquery,Ajax,Json,嗨,我的申请有问题。我使用xampp测试我的应用程序。我在htdocs中有两个文件夹: 文件夹客户端:这是index.html和一个包含js文件的文件夹 文件夹服务器:这里有一个server.php文件和data.json文件 我从一个朋友那里得到了代码,我看了看为什么它不起作用,但我不知道哪里出了问题 应用程序必须创建一个用户,并将关于jqueryajax的信息发送到php文件,然后将数据保存在json文件中 如果我点击按钮,什么也不会发生:( 以下是index.html: <!DOCT

嗨,我的申请有问题。我使用xampp测试我的应用程序。我在htdocs中有两个文件夹:

文件夹客户端:这是index.html和一个包含js文件的文件夹

文件夹服务器:这里有一个server.php文件和data.json文件

我从一个朋友那里得到了代码,我看了看为什么它不起作用,但我不知道哪里出了问题

应用程序必须创建一个用户,并将关于jqueryajax的信息发送到php文件,然后将数据保存在json文件中

如果我点击按钮,什么也不会发生:(

以下是index.html:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.js"></script>
    <script src="js/script.js"></script>
</head>
<body>
    <button type="button" id="add">Mitarbeiter hinzufügen</button>
    <div id="TableContent"></div>
</body>
</html>

米塔贝特·欣祖夫根
下面是javascript:

$(document).ready(function() {
    // Fill table with data from server on first load
    $.ajax({
        type: "GET",
        url: "../server/server.php",
        data: {
            method: "all"
        },
        success: function(content) {
            // Create table content from server data
            var table = $.makeTable($.parseJSON(content));
            // Append table data to table element in index.html
            $(table).appendTo("#TableContent");
        }
    });

    // Add user
    $('#add').on('click', function(){

        alert("Ein neuer Benutzer wird erstellt");

        console.log('add user');
        $.ajax({
            type: "POST",
            url: "../server/server.php",
            data: {
                vorname: "Wowa",
                nachname: "Tarasov"
            },
            success: function(content) {
                alert(content);
            }
        });
    });

    // Delete user
    $(document).on("click", "button.remove" , function() {
        // Send DELETE request to server
        // Id of a user
        console.log($(this).attr('value'));
        console.log('delete');

        $.ajax({
            type: "DELETE",
            url: "../server/server.php",
            data: {
                method: "all"
            },
            success: function(content) {
                // content is a response from server
                // Don't forgive to update the table after adding of a user
            }
        });
    });

    // Function to generate a table from a json array
    // It will not work, if you pass an object to it
    $.makeTable = function (mydata) {
        var table = $('<table border=1>');
        var tblHeader = "<tr>";
        for (var k in mydata[0]) tblHeader += "<th>" + k + "</th>";
        tblHeader += "<th>Aktionen</th>"
        tblHeader += "</tr>";
        $(tblHeader).appendTo(table);
        $.each(mydata, function (index, value) {
            var TableRow = "<tr>";
            var idx = value.id;
            $.each(value, function (key, val) {
                TableRow += "<td>" + val + "</td>";
            });
            TableRow += '<td><button class="remove" value=' + idx + '>Delete</button></td>';
            TableRow += "</tr>";
            $(table).append(TableRow);
        });
        return ($(table));
    };
});
$(文档).ready(函数(){
//在第一次加载时使用来自服务器的数据填充表
$.ajax({
键入:“获取”,
url:“../server/server.php”,
数据:{
方法:“全部”
},
成功:功能(内容){
//从服务器数据创建表内容
var table=$.makeTable($.parseJSON(content));
//将表数据附加到index.html中的表元素
$(表)。附加到(“#表内容”);
}
});
//添加用户
$('#添加')。在('单击',函数()上){
警报(“Ein neuer Benutzer wird Erstellet”);
log('adduser');
$.ajax({
类型:“POST”,
url:“../server/server.php”,
数据:{
名字:“沃瓦”,
纳克纳姆:“塔拉索夫”
},
成功:功能(内容){
警报(内容);
}
});
});
//删除用户
$(文档).on(“单击”,“按钮.删除”,函数()){
//向服务器发送删除请求
//用户Id
console.log($(this.attr('value'));
console.log('delete');
$.ajax({
键入:“删除”,
url:“../server/server.php”,
数据:{
方法:“全部”
},
成功:功能(内容){
//内容是来自服务器的响应
//不允许在添加用户后更新表
}
});
});
//函数从json数组生成表
//如果您将对象传递给它,它将不起作用
$.makeTable=函数(mydata){
变量表=$('');
var tblHeader=“”;
对于(mydata[0]中的var k)tblHeader+=“”+k+“”;
tblHeader+=“Aktionen”
tblHeader+=“”;
$(tblHeader).附录(表);
$.each(mydata、函数(索引、值){
var TableRow=“”;
var idx=value.id;
$.each(值、函数(键、值){
TableRow+=“”+val+“”;
});
TableRow+=“删除”;
TableRow+=“”;
$(表).append(表行);
});
报税表(元);;
};
});
下面是php:

<?php

class Request
{
    public $url_elements;
    public $methode;
    public $parameters;

    public function __construct()
    {
        $this->methode = $_SERVER['REQUEST_METHOD'];
        if(isset($_SERVER['PATH_INFO'])) $this->url_elements = explode('/', $_SERVER['PATH_INFO']);
        else $this->url_elements = array();
        // get GET/DELETE or POST/PUT parameters
        $parameters = array();
        if (isset($_SERVER['QUERY_STRING'])) {  // get GET/DELETE parameters
            parse_str($_SERVER['QUERY_STRING'], $parameters);
        }
        $body = file_get_contents("php://input"); // get POST/PUT request body
        parse_str($body, $postvars);
        foreach ($postvars as $field => $value) {
            $parameters[$field] = $value; // overwrite GET/DELETE parameteres
        }

        $this->parameters = $parameters;
    }
}

/**
 * Class RequestHandler handles GET, POST, PUT and DELETE HTTP-requests from clients
 */
class RequestHandler
{
    /**
     * Read method
     */
    public function getAction($request)
    {
        $data = $request->parameters;


        switch ($request->parameters['method']) {
            case 'all':

                $person1 = new stdClass;
                $person1->Id = 1;
                $person1->Vorname = "Max";
                $person1->Nachname = "Mustermann";
                $person1->Geburtstag = "11.11.1980";
                $person1->Abteilung = "Personal";

                $person2 = new stdClass;
                $person2->Id = 2;
                $person2->Vorname = "Sabine";
                $person2->Nachname = "Musterfrau";
                $person2->Geburtstag = "05.12.1989";
                $person2->Abteilung = "Finanzen";

                // Add person in array
                $persons = array();
                array_push($persons, $person1);
                array_push($persons, $person2);

                // Encode array to json string and return to client
                return json_encode($persons);
                break;
            case 'single_user':
                break;
            default: // do nothing, this is not a supported action
                break;
        }
        return json_encode($data);
    }

    /**
     * Delete method
     */
    public function deleteAction($request)
    {
        $data = $request->parameters;
        return json_encode($data);
    }

    /**
     * Create method
     */
    public function postAction($request)
    {
        $data = $request->parameters;
        return json_encode($data);
    }

    /**
     * Update method
     */
    public function putAction($request)
    {
        $data = $request->parameters;
        return json_encode($data);
    }
}

$request = new Request();
$handler = new RequestHandler();
$action = strtolower($request->methode) . 'Action';
$result = $handler->$action($request);
print_r($result);

您的意思是您的
警报()
没有触发?您的控制台中有任何错误吗?这些问题可能看起来像是转储,但根据这一点,您的代码(JSFIDLE上的ajax调用除外)您是否尝试过在没有ajax的情况下调用此脚本,因此您得到了正确的php错误消息?我是如何说这是firend的代码,他想使用ajax的…我看了一下,但没有发现错误:(制作一个基本表单并使用post调用php脚本。然后您将看到php错误消息。请指定您在浏览器中访问文件时使用的确切url。