0

javascript と php を使用して「名前を付けて保存」機能を作ろうとしています。私が使用するhtmlで:

<textarea id="filename" cols="20" rows="1"></textarea>    
<li class ="add" onclick="js:saveas()" >save</li>

次に、インライン JavaScript を使用して、これを実行して、ファイル名と動的に生成された dom を取得します。

<script>
function saveas() {
   $.post('write.php', { name : $('#filename').val() });
   $.post('write.php', { dom : $('html').html() });
    }

 </script>

次に、「write.php」で...

<?php
$name = urldecode($_POST['name']);
$dom = urldecode($_POST['dom']);
file_put_contents($name, $dom);

?>

しかし、コンソールには次のように表示されます。

[30-Aug-2012 15:45:22] PHP Notice:  Undefined index: dom in /Users/J/Documents/test7/test7/write.php on line 3

[30-Aug-2012 15:45:22] PHP Notice:  Undefined index: name in /Users/J/Documents/test7/test7/write.php on line 2

[30-Aug-2012 15:45:22] PHP Warning:  file_put_contents() [<a href='function.file-put-contents'>function.file-put-contents</a>]: Filename cannot be empty in /Users/J/Documents/test7/test7/write.php on line 4

そして、正しい名前でファイルを作成しますが、それは空でゼロバイトです。ただし、次のようにファイル名をハードコードすると、次のようになります。

file_put_contents('foo.html', $dom);

私はまだ通知を受け取りますが、すべてが正常に機能します。私が間違っていることについてのアイデアはありますか?

4

2 に答える 2

2

セキュリティの問題は別として (あなたがしていることは安全ではありません)、2 つの異なる POST をwrite.phpに送信しています。

1 つのリクエストで両方の値を送信したい場合:

$.post('write.php', {
    name : $('#filename').val(),
    dom : $('html').html()
});

そして、あなたがしていることは安全ではないと言いましたか?

于 2012-08-30T20:10:06.470 に答える
1

なぜあなたは2つの$.post電話をしているのですか?1 回の呼び出しで両方の変数を送信する必要があります。

$.post('write.php', {
    name : $('#filename').val(),
    dom : $('html').html()
});
于 2012-08-30T20:10:07.113 に答える