1

サーバーからxmlファイルをロードできるようにしたい。jQueryを使用してxml内のノードを編集し、この変更を残りのxmlファイルとともにphpを使用してサーバーに保存します。誰もがこれを行う方法を知っていますか?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ファイルも取得しますが、空白です。

4

1 に答える 1

4

これまでにこれを行ったことがありませんが、ここでいくつかの情報を見つけました: jQuery を使用してxmlを文字列に変換する以下をテストしました。これにより、元の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/

于 2012-11-23T20:44:42.893 に答える