私がやりたいことは確かに達成できますが、私は何か間違ったことをしています。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()関数には、以前のコードが含まれています。