0

編集:これは現在機能し、コードが更新されています。Martin Ampsに感謝します!

だから私はこれで1週間遊んでいて、多くの例を一緒にハッキングしましたが、うまくいきませんでした。それは混乱しているので、コードを投稿することはしません!私はすべての取引のジャックであり、誰のマスターでもないので、どこが間違っているのかわかりません。

これが私が必要なものです。


posttest.php

<html>
<head>
<script type="text/javascript" src="./js/jquery-1.7.2.min.js"></script>
</head>
<body>

<form name="processForm" id="processForm" action="process.php" method="POST">
  <input type="text" id="textField" name="textField" />
  <input type="hidden" id="sessionID" name="sessionID" value="myusername" />
<input type="submit" value="Process!" />
</form>

<div id="mydiv"></div>

FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>
FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>FILLER<BR><BR>

<script type="text/javascript">

$('#processForm').submit(function() {
  var text = $('#textField').val();
  var sid  = $('#sessionID').val();

$.ajax({
  url: "process.php",
  type: "POST",
  data: { 'text' : text, 'sessionID' : sid },
  success: function(data) {
    var result = $.parseJSON(data);
    if (result.success) {           
        // Handle your result and update your form accordingly  
        // result.data.someKey  
        $('#mydiv').text('Success! With ' + result.data);

    }
    else {
        // Error handling as applicable
    }
  }
});

    return false;
});

</script>

</body>
</html>

process.php

<?php
$someText=$_POST['text'];

$return = array('success' => false, 
            'data' => $someText
           );

if (isset($_POST['text'], $_POST['sessionID'])) {
    // Do your queries

    $return['success'] = true;
    //$return['data'] = array('someKey' => 'someValue');
    $return['data'] = $someText;
}

echo json_encode($return);
?>

私はたくさんの例を試しましたが、最初から自分で作成しようとしましたが、うまくいかないようです!私が達成しようとしていることの例は、Facebookにコメントを追加したり、新しい投稿をしたりするときのようなものです。

この簡単な作業でもう1週間も無駄になっているような気がするので、誰かが助けてくれることを願っています。

前もって感謝します!

4

4 に答える 4

4

セッション変数はすでにCookieに保存されているため、ページに保存する必要はありません。JQueryを使用していると仮定して、次の簡単なサンプルを示します。

マークアップ

<form id="processForm" action="process.php" method="POST">
   <input type="text" id="textField" name="textField" />
   <input type="hidden" id="sessionID" name="sessionID" value="<?=session_id()?>" />
   <input type="submit" value="Process!" />
</form>

Javascript

$('#processForm').submit(function() {
  var text = $('#textField').val();
  var sid  = $('#sessionID').val();

  $.ajax({
    url: "process.php",
    type: "POST",
    data: { 'text' : text, 'sessionID' : sid },
    success: function(data) {
        var result = $.parseJSON(data);
        if (result.success) {           
            // Handle your result and update your form accordingly  
            // result.data.someKey  
        }
        else {
            // Error handling as applicable
        }
    }
   });

   return false;
});

process.php

<?php

$return = array('success' => false, 
                'data' => array()
               );

if (isset($_POST['text'], $_POST['sessionID'])) {
    // Do your queries

    $return['success'] = true;
    $return['data'] = array('someKey' => 'someValue');
}

echo json_encode($return);
?>

ノート

絶対URLを使用する必要があり、form / javascriptは目立たないので、ajaxなしでも機能させる必要があります。

于 2012-07-14T23:50:37.847 に答える
0

これに一般的なAJAXリクエストを使用して、応答時にdivを変更できますか?

もちろん、これはJQueryを使用しています。

$.ajax({
                    type: "POST",
                    url: "/process.php",    
                    data: "yourData=AwesomeData&SomeOtherData=5",
                    success: function(data){
                        //Update the div
                    },
                    error: function(request){
                        //Something went wrong.
                    },
                });
于 2012-07-14T23:42:43.587 に答える
0

私はあなたがajaxを介してprocess.phpからいくつかのデータをロードしたいと思っていると仮定しています。load()jqueryのメソッドを使用できます。http://api.jquery.com/load/

index.phpファイル

$('#container').load('process.php', {'variable1' : var1, 'variable2' : var2}); 

上記のコードは、リクエストを使用してajax経由でデータを送信するために使用されますPOSTしたがって、を使用してprocess.phpファイルでそれらにアクセスする必要があります。$_POST['variable1']次にクエリを実行するだけです。すでにその方法を実行していると想定しているため、例は示していません。複数行の結果の場合は、結果を配列に格納する必要があります。

$store = array();
foreach($result as $row){
  $store[] = array('field1'=>$row['field_name']);
}

最後json_encodeに、javascriptで配列を処理しやすくするために使用します。

echo json_encode($store);

さらにサポートが必要な場合は、お気軽にコメントしてください。

于 2012-07-14T23:55:09.867 に答える
0

ユーザーデータを収集するためのWebフォームの例を次に示します。

<form class="form">
<input class="name" type="text"/>
<input class="email" type="text"/>

<button class="submit">Send Data</button>
</form>

jQueryは次のとおりです。

$('form button.submit').click(function() {
    $.ajax({
        'data' : $('form').serialize(),
        'type' : 'POST',
        'url' : 'process.php',
        'success' : function(data) {
            $('div.container').html('<p>' + data + '</p>');
        }
    });
});

PHPは次のとおりです。

<?php
    if (isset($_POST['name']) && isset($_POST['email']) && $_POST['name'] != "" && $_POST['email'] != "") {
    //Do some SQL processing

        echo "success";
        exit;
    }

?>

お役に立てば幸いです。

于 2012-07-15T00:12:59.293 に答える