首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将我的内容更新为XML-file

将我的内容更新为XML-file
EN

Stack Overflow用户
提问于 2015-01-19 18:59:59
回答 1查看 75关注 0票数 2

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

代码语言:javascript
复制
$(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());
                }
            });
        }
    })
})

这样,这些节点的内容就被推入可以用类"abstimmer“标识的父级ul元素的li元素中。

我现在还想把php文件中的数据推回xml-文件中。我想通过计算li元素的点击数来实现这一点,我就是这样做的:

代码语言:javascript
复制
$(".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发送到php文件,该文件以某种方式解析var klick_neu并将其推入该xml-文件。但我不知道该怎么做。有人能帮我吗?

我不确定,如果stackoverflow的规则没有问题,但我只是对同一问题中的另一件事感到好奇:如果我只是在就绪函数中添加了onClick-事件,我可以“无缝地”将xml-文件的更新内容加载到我的列表中--对吗?

非常感谢。

我的XML-文件或多或少会是这样的:

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 19:19:58

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

代码语言:javascript
复制
$(".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文件

代码语言:javascript
复制
<?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;

?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28031717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档