繁体   English   中英

将我的内容更新为XML文件

[英]Update my content into XML-file

我非常感激地设法将XML文件的内容加载到我的php文档中,如下所示:

$(document).ready(function () { 
    $.ajax({ 
        type: "GET", 
        url: "abstimmer.xml", 
        dataType: "xml", 
        success: function (xml) { 
            var $lis = $(".abstimmer li");
            $(xml).find('klick').each(function (index) {
                if (index < $lis.length) {
                    $lis.eq(index).html($(this).text());
                }
            });
        }
    })
})

这样,这些节点的内容将被推送到可通过类“抽象”识别的父级ul元素中。

我现在也想将数据从php文件推回xml文件。 我想通过计算锂元素的点击次数来做到这一点,我的工作方式是:

$(".abstimmer li").click(function(){
    this.clicked=this.clicked?this.clicked+1:1;
$(this).html(this.clicked)
var klick_neu = $(this).html(this.clicked);
// Where would I need to go from here?
});

我知道,现在我需要将var klick_neu发送到一个以某种方式解析var klick_neu并将其推入该xml文件的php文件。 但是我不知道该怎么做。 有人可以帮我吗?

而且我不确定,对于stackoverflows的规则是否还可以,但是我只是对同一问题中的其他事情感到好奇:如果我只是在ready函数中添加了onClick-Event,则可以“无缝”加载更新xml文件的内容放入我的列表中-对吗?

非常感谢。

我的XML文件或多或少如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<abstimmer>
<seite id="2">
    <klick>3</klick>
    <klick>5</klick>
    <klick>9</klick>
    <klick>12</klick>
    <klick>1</klick>
    <klick>0</klick>
</seite>

这是我写的一种方法。 您需要精通它。 我真的不知道您的xml文档的标记。 我从您提交的代码推断出来。 这是做什么的。 每当有人单击LI ,就会对服务器进行AJAX调用。 在那里xml被更新并发布回响应中。 页面中的HTML随新数据一起更新。 这种方法的一个缺点是它一次仅支持一个动作。 如果两个人将写入同一文件,将导致数据丢失。 更好的解决方案是使用数据库来跟踪此情况。

$(".abstimmer li").click(function(){
    var klick_neu = parseInt($(this).html())+1;
    var index = Array.prototype.slice.call($(".abstimmer li")).indexOf(this);

    //create an ajax call that posts the new click count to the server.
    $.ajax({ 
        type: "POST", 
        url: "abstimmer.php", 
        dataType : "xml",
        data : {clicks : klick_neu, element : index},
        success: function (data) { 
            var $lis = $(".abstimmer li");
            $(data).find('klick').each(function (index) {
                if (index < $lis.length) {
                    $lis.eq(index).html($(this).text());
                }
            });
        }
    })
});

新的abstimmer.php文件

<?php
    $clicks = $_POST['clicks'];
    $index = $_POST['element'];
    $doc = new DOMDocument();
    $doc->load("abstimmer.xml");

    $elements = $doc->getElementsByTagName("klick");
    $elements->item($index)->nodeValue = $clicks;

    $xml = $doc->saveXML();

    if($handle = fopen("abstimmer.xml", "w"))
    {
        if (!fwrite($handle, $xml))
        {
            fclose($handle);
        }
        fclose($handle);
    }

    header('Content-Type: text/xml; charset=utf-8');
    echo $xml;

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM