0

ユーザーが Web ページのボタンをクリックしたときに、サーバー上のファイルを編集しようとしています。php を使用してボタンのテーブルを生成します。STRING1、STRING2、および BOOL は、関数に渡す変数です。作成した editPlist() 関数が呼び出され、テストの alert() が表示されます。問題は、php ファイルを実行することです。エラーも発生していません。何が悪いのかわからないようです。

サンプル HTML ボタン:

<a href="#" onclick="editPlist('STRING1', 'STRING2', 'BOOL')" class="buttong">1 : Round 1</a>

ボタンをクリックすると、次のスクリプトが実行されます (URL 行の PHP が、実行するファイルのアドレスを生成します)。

<script type='text/javascript'>
function editPlist(stage, dance, oldValue)
{
    alert('test ' + stage + dance + oldValue);
    $.ajax({
        type: "POST",
        url: <?php echo '"'.dirname(curPageURL()).'/PlistEditorFunction.php"' ?>,
        data: {"var1" : stage , "var2" : dance , "var3" : oldValue},
        success: function(msg){
            alert( "Data Saved: " + msg ); //Anything you want
        }
    });
}

外部の php ファイル PlistEditorFunction.php で、偽のエラーをログに記録して変数をロードしようとしましたが、エラーは表示されません。これはphpファイルの始まりです:

$msg = 'test error message';
error_log('['.date("F j, Y, g:i a e O").']'.$msg."<br /> \n", 3,  $phperrorPath);
if (isset($_POST['data']) and trim($_POST['data']) != '' ) {
    $stage = trim($_POST['var1']);
    $dance = trim($_POST['var2'])
    $oldValue = trim($_POST['var3']);
}

ドメイン名がajaxの実行元のファイルと一致する場合にのみ、phpスクリプトが実行されることを私は知っています。2 つのファイルが隣り合っているので、これが問題ではないことはわかっています。

これを修正するにはどうすればよいですか?

4

3 に答える 3

1

この行を変更

url: <?php echo '"'.dirname(curPageURL()).'/PlistEditorFunction.php"' ?>

url: 'PlistEditorFunction.php'

そして、それが機能するかどうかを確認します

于 2012-05-04T00:03:37.197 に答える
0

いくつかのことが奇妙に見えます。

呼び出した URL が実際にあなたが思っているものであることを確認してください。これを行うには、コンソール/インスペクターを使用します。ファイアーバグをお勧めします。ajax 呼び出しを行うと、ajax で要求しているページの URL が表示されます。

それが正しければ、あなたの url パラメータは問題ではありません。次に、php ファイル自体を調べます。ajax 応答が実行されていることを確認できるように、php ファイルに echo ステートメントをスローしてみてください。ファイルにエコーするものは何でもPlistEditorFunction.php、成功関数の応答パラメーターになります

success: function( response ) {
    console.log(response); //should be the echo'd statement of PlistEditorFunction.php
}
于 2012-05-04T00:06:43.537 に答える
0

mwotton のコメントの後、ajax が未定義であることがわかりました。jQueryがインポートされたので、問題はありません。答えは、$.ajax を jquery.ajax に変更する必要があるというものでした。

一部のホストでは、jQuery を示すために「$」を使用しません。私のウェブホストは代わりに「jquery」を使用しています。

于 2012-05-07T12:37:47.750 に答える