5

サーバー上のファイルに JSON (Javascript で生成) を保存したいだけです。しかし、単純な文字列では機能しません。

HTML ファイル:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<style>
#test{
padding:20px 50px;
background:#ccc;
color:#000;
}
</style>
<script>
$(function(){
$('#test').click(function(){
    $.ajax({
        url: "page.php",
        data: {"foo": "bar"},
        processData: false,
        contentType: 'application/json'
    });

});
});
</script>
</head>
<body>

<div id="test">
KLICK
</div>
</body>
</html>

そして、phpファイルは次のようなものです:

<?php
$myFile = "testFile.txt";
$fh = fopen($myFile, 'w');
fwrite($fh,$_POST['data']);
fwrite($fh,$_POST['foo']);
fwrite($fh,$_POST["foo"]);
fwrite($fh,$_POST[foo]);
fclose($fh);

何も機能しませんでした。私も試しました

$.ajax({
    var datatosend="foo bar";
    url: "page.php",
    data: datatosend,
    processData: false
    });

何が問題なのかわかりません。html ファイルの div をクリックすると、txt ファイルが表示されます。しかし、ファイルにはコンテンツがありません。$_POST をテキスト ファイルに書き込むと、ファイルには Text "Array" が含まれます。これは、$_POST にコンテンツがあることを意味します。

4

4 に答える 4

2

ここでうまくいかないことはほとんどありません。書き込もうとしているディレクトリの権限を確認してください。また、ajax 呼び出しが POST メソッドを使用していることを確認してください。

$.ajax({
  url: "page.php",
  type : 'POST',
  ...
}); 

jQuery ドキュメントに記載されているように、type パラメータはリクエスト タイプ、POST または GET を設定します。

作成するリクエストのタイプ (「POST」または「GET」)。デフォルトは「GET」です。


考慮すべきもう 1 つの点は、実際には JSON データを作成していないということです。データはその形式で送信されますが、$_POST変数に到達すると配列に変換されます。あなたがすべきことは、PHP配列をファイルに書き込むことです-

$fh = fopen($myFile, 'w');
fwrite($fh,'<?php $arr='.var_export($_POST['data'],true).' ?>');
fclose($fh);

これにより、次のようなファイルが得られるはずです-

<?php
  $arr = array(
    'foo'=>'bar'
  )
?>

ご覧のとおり、var_export()関数は変数の解析可能なバージョンを返します。

var_export — 変数の解析可能な文字列表現を出力または返す

于 2012-08-30T10:28:19.843 に答える
0

電話をかける必要がありPOSTます。以下を参照してください。

$('#test').click(function(){
    $.ajax({
        url: "page.php",
        type : 'post', 
        data: {"foo": "bar"},
        processData: false,
        contentType: 'application/json'
    });

});
于 2012-08-30T10:28:11.520 に答える
0

デフォルトでは、すべての $.ajax() リクエストは、POST ではなく GET メソッドを使用して送信されます。タイプを「POST」として指定する必要があります。

$.ajax({
    var datatosend="foo bar";
    url: "page.php",
    type: 'post',
    data: datatosend,
    processData: false
    });

ドキュメントから:

タイプ - 文字列

デフォルト: 'GET'

作成するリクエストのタイプ (「POST」または「GET」)。デフォルトは「GET」です。注: PUT や DELETE などの他の HTTP 要求メソッドもここで使用できますが、すべてのブラウザーでサポートされているわけではありません。

于 2012-08-30T10:28:25.850 に答える
0

そうあるべきなのかもしれません

    $.ajax({
    url: "page.php",
    type: "POST", // add this
    data: {"foo": "bar"},
    processData: false,
    contentType: 'application/json'
});

また

PHP$_REQUESTでは、代わりに$_POST

于 2012-08-30T10:28:54.367 に答える