【问题标题】:Use jquery to load xml file, edit it, then save to server again with php使用jquery加载xml文件,编辑它,然后用php再次保存到服务器
【发布时间】:2012-11-23 19:45:25
【问题描述】:

我希望能够从我的服务器加载一个 xml 文件。使用 jQuery 编辑 xml 中的一个节点,然后使用 php.ini 将此更改与 xml 文件的其余部分一起保存回服务器。有人知道怎么做吗?我有更改 xml 节点的代码,并且可以在我的控制台中看到它。但无法将代码返回到我的服务器。

谢谢!

<?php
$xml = $_POST['xml'];
$file = fopen("data.xml","w");
fwrite($file, $xml);
fclose($file);
?> 

$.post('saveXml.php', { xml: $(data)}, function(data){alert('data loaded');});

如果我 console.log(data) 我得到 #document 和所有 xml 节点。我还在我的服务器上获取了 data.xml 文件,但它是空白的。

【问题讨论】:

  • 向我们展示您正在使用但不起作用的代码
  • 添加的代码...thianks @charlietfl
  • var_dump 你的 $xml 看看你是否在 php 端得到完整的 xml,还要检查你的网页视图源,有时 xml 不会出现在网页上
  • 我如何 var_dump 我的 $xml - 就像这个 var_dump($xml) - 我如何检查这个? @Pankaj Khairnar
  • 我在 console.log 中得到了这个 - 不知道它是否有帮助 Uncaught TypeError: Illegal invocation

标签: php jquery xml


【解决方案1】:

以前从未这样做过,但在这里找到了一些信息:Convert xml to string with jQuery 我已经测试了以下内容,它将修改原始 xml 并作为 $_POST['xml'] 收到的字符串发送回服务器

$(function() {
    $.get('test.xml', function(xml) {
        var $xml = $(xml)
         /* change all the author names in original xml*/
        $xml.find('author').each(function() {
            $(this).text('New Author Name');

        })

        var xmlString=jQ_xmlDocToString($xml)

            /* send modified  xml string to server*/    
        $.post('updatexml.php', {xml:xmlString },function (response){             
             console.log(response)
             /* using text dataType to avoid serializing xml returned from `echo $_post['xml'];` in php*/
        }'text')
    }, 'xml')
});

function jQ_xmlDocToString($xml) {
    /* unwrap xml document from jQuery*/
    var doc = $xml[0];
    var string;
    /* for IE*/
    if(window.ActiveXObject) {
        string = doc.xml;
    }
    // code for Mozilla, Firefox, Opera, etc.
    else {
        string = (new XMLSerializer()).serializeToString(doc);
    }
    return string;
}

演示:http://jsfiddle.net/54L5g/

【讨论】:

  • 这是否意味着我必须在将 xml 数据发送回服务器之前将其更改为字符串? @charlietfl
  • 能否请您看看我在 blinqcreative.co.uk/xml 上的演示,让我知道我缺少什么 - 我的 php 脚本在上面的示例中。谢谢@charlietfl
  • 您需要将 xml 文档转换为字符串,就像我在 jQ_xmlDocToString 中所做的那样。你可以在demo中看到我提供的代码有效,所以尝试使用它
  • 好的,所以使用了您的代码,它似乎可以加载并且没有错误...但是...新文件中没有 xml。我的 php 脚本是否正确? @charlietfl
  • 控制台中的错误需要修复。如果您要更改它需要在$( data) 中的xml,所以我的函数需要传入一个jQuery 对象,而不是原始文档
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 2021-03-28
  • 1970-01-01
相关资源
最近更新 更多