0

私がやりたいことは確かに達成できますが、私は何か間違ったことをしています。Ajax呼び出しを使用するときにXMLファイルを作成したいのです。次のコードを取得しました(合成)。この例はうまくいかないかもしれません、それは単に例証するだけです:

HTML

<html>
<head>
  <!-- JQuery 1.7 included -->  
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js" type="text/javascript"></script>
</head>
<body>
  <p>Create XML on server!</p>
  <form id="prog" method="POST">
    <input type="text" id="test" />
    <button id="submit" type="submit"> Create now! </button>
  </form>
  <script>
    jQuery.noConflict();
    jQuery(document).ready(function($){
        var test = $('#test').val();
 
        // When the button it's clicked:
        $('#submit').click(function () {
            $.ajax({
                // Este es el archivo PHP que procesa la información y envía el mail
                url: "createXML.php",
                type: "POST",
                data: test,
                success: function (html) {
                    // If succeed
                    if (html==1) {
                        alert("DONE!!");
                    }
                }
            });
        });
         
        // With this I cancel the default behaviour of the button so it doesn't submit by itself.
        return false;
    });

</script>
</body>
</html>

サーバー内のPHP

<?php
    echo "HI! Ajax arrived here and this code it's being executed!";
    
    //I load a string to be the contents of the XML file
    $exemel = simplexml_load_string('<example><simple>As simple as this!</simple></example>');
    
    // I save the file as following:
    $exemel->asXml('xml/DONE.xml');
    echo 1;
?>

この例では、PHPコードはそのまま機能しますが、他のコードは機能しません。しかし、私のコードのコンテキスト全体では、Ajax呼び出しは機能します。それ以外のすべてのことを実行するので、XMLコードの作成だけでは機能しないので間違いありません。こことまったく同じPHPコードを使用しているので、Ajaxを実行すると、ファイルは作成されません。コンソールの場合は

php createXML.php

正常に作成されたXMLファイル。つまり、これはPHPコードではなく、同時に、Ajax呼び出しでエラーになることもありません。これは、必要なすべてのことを実行するためです。何が起こっているのでしょうか?

編集

私の実際のコードでは、サーバーのPHPファイルで次のようにします。

$test = (isset($_GET['test'])) ? $_GET['test'] : null;
//If something fails, I add the error to an errors array:
$errors = array();
isset($errors);
if (!$test) $errors[count($errors)] = 'Something failed with the test!';
//If there are any errors
if (!$errors) {
    createXML ();
}

そのcreateXML()関数には、以前のコードが含まれています。

4

2 に答える 2

1

これを試して

$xml = simplexml_load_string($_POST['test']);
if(file_put_contents("xmlfile.xml",$xml->asXML())){
 echo "xml file created successfully";
}else{
 echo "failed to create file";
}

また、php側では、$ _ POST ['test']では何もしませんか?ここで、xml文字列はです。

于 2012-06-12T16:56:50.450 に答える
0

恥ずかしいですuu取得したコードは正常に機能していましたが、ファイルを書き込むフォルダーにユーザーのアクセス許可がありませんでした= /申し訳ありません...これを再確認しましたが、chmod777でもできませんでしたやらないで。これは、ユーザーのグループの権限の問題でした...申し訳ありませんが、私を助けてくれてありがとう。 Linuxのフォルダーへのアクセス許可を変更する

于 2012-06-12T19:01:46.503 に答える