0

私は次のフォームを持っています:

<p>Choose your page:</p>
<form id="ChartsForm" onsubmit="return submitForm();">
    <select name="accmenu" id="accmenu" style="width:300px;">
        <?php
        $user_accounts = $facebook->api('/me/accounts','GET');
        foreach($user_accounts['data'] as $account) {
        ?>
            <option data-description="<?php echo $account['category'] ?>" data-image="https://graph.facebook.com/<?php echo $account['id']; ?>/picture" value="<?php echo $account['id'] ?>"><?php echo $account['name'] ?></options>
        <?php
        }
        ?>
    </select>
    <p>Choose your insights:</p>
    <div class="chartsbuttons">
        <input type="submit" name="submit" value="Daily new likes">
        <input type="submit" name="submit" value="Daily unlikes">
        <input type="submit" name="submit" value="Daily page views">
    </div>
</form>

これには、「毎日の新しいいいね」、「毎日のいいね」、「毎日のページビュー」という選択ボタンと、今のところ 3 つのテスト送信ボタンが含まれています。submitForm 関数で定義されている次のような ajax 呼び出しを使用します。

function submitForm() {
    $.ajax({type:'GET', url: 'check.php', data:$('#ChartsForm').serialize(), success:
        function(response) {
            alert(response);
        }});
    return false;
};

選択したオプションの値がphpスクリプトに送信されているかどうかを確認し、FacebookページIDである必要がある応答を警告します。phpスクリプトは次のとおりです。

<?php
echo $_GET['accmenu'];
?>

これは正常に動作していますが、リクエストを送信する送信ボタンごとに php ファイルを作成します。例: 「毎日の新しいいいね」を押すと、get リクエストが newlikes.php に送信され、「毎日のページ ビュー」を押すと、get リクエストが pageviews.php に送信されます。フォームを 1 つだけ定義しましたが、そのままにしておきたいと思います。送信ボタンに基づいてJQuery Ajaxを使用して特定のURLに送信するにはどうすればよいですか? 入力ごとに新しい JavaScript 関数を作成する必要がありますか? 新しいフォームを作成する必要があるため、フォームはどうですか? 新しいものを作成すると、それらのそれぞれで選択が利用できなくなりますか? この問題で立ち往生しているため、本当にガイダンスが必要です。どんな助けでも大歓迎です。

4

1 に答える 1

0

PHP では、本当に必要でない限り、リクエストを実行するために 3 つの個別のファイルをセットアップする必要はありません。いくつかの変更を加えて既存の関数を使用して重い作業を実行できるはずですが、指定されたパラメーターに基づいて別のファイルを呼び出す変更を次に示します。

function submitForm(アクション) {
    $.ajax({type:'GET', url: アクション + '.php', data:$('#ChartsForm').serialize(), 成功:
        関数 (応答) {
            アラート (応答);
        }});
    false を返します。
};

次に、いくつかの属性をボタンに割り当て、クリック イベントをバインドして関数をトリガーします。

HTML

<input type="submit" name="submit" value="毎日の新しいいいね" data-action="new_likes">

JavaScript

$("input[type='submit']", "#ChartsForm").on("クリック", function(e){
  e.preventDefault();
  submitForm($(this).attr("data-action"));
});
于 2013-04-29T14:54:30.767 に答える