0

次の状況で完全に混乱しました...

状況

a.php からb.phpにデータを投稿し、 b.phpにリダイレクトします...しかし失敗します

コード - a.php

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script>
      $(document).ready(function() {
        $('#submit').click(function() {
          $.ajax({
            url: 'b.php',    
            dataType: 'html',
            type: 'POST',
            data: { 
              value: $('#value').val()
            },
            error: function(xhr) {
              console.log('ajax went wrong!');
            },
            success: function(response) {
              console.log(response);
              window.location.href = "b.php";      
            }
          });

        });
      });
    </script>
  </head>
  <body>
    value: <input type="text" id="value">
  </body>
</html>

コード - b.php

<?php
  echo $_REQUEST['value'];
?>

a.phpは、リダイレクト機能なしでb.phpから正しい応答を得ることができます。ただし、ステートメントを含めるとwindow.location.href = "b.php";、 a.php はb.phpにリダイレクトされますが、何も出力されません。なぜこのような状況が起こっているのですか?これを修正する解決策はありますか?

ありがとう!

4

5 に答える 5

1

あなたの ajax コードは機能しています。URL b.php を呼び出し、値を出力に出力しています。ただし、結果は期待したものではありません。

ajax 呼び出しを行い、フォームにデータを送信すると、 ajax リクエストが成功したときに b.php の評価が応答されます。次の変更を加えてみてください。

から

window.location.href = "b.php"; 

alert(response);

入力内容をメッセージ ボックスに表示します。適応したコードに従ってください。電話をかけるためのボタンを追加したことに注意してください。

index.php

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script>
      $(document).ready(function() {
        $('#submit').click(function() {
          $.ajax({
            url: 'ajax.php',    
            dataType: 'html',
            type: 'POST',
            data: { 
              value: $('#value').val()
            },
            error: function(xhr) {
              console.log('ajax went wrong!');
            },
            success: function(response) {
                alert(response);
                console.log(response);
              //window.location.href = "b.php";      
            }
          });

        });
      });
    </script>
  </head>
  <body>
    value: <input type="text" id="value">
    <input type=button id="submit" value=go>
  </body>
</html>

ajax.php

<?php
echo $_REQUEST['value'];
?>

これがajaxアプローチです。ただし、フォーム内の値を b.php に渡すだけでよい場合は、ajax は必要ありません。フォームを作成し、b.php を次のようにアクションとして使用するだけです。

index.php

    <html>
  <head>
  </head>
  <body>
    <form method="POST" action="b.php">
    value: <input type="text" id="value" name="value">
    <input type=submit  value=go>
    </form>
  </body>
</html>

b.php

<?php
echo $_REQUEST['value'];
?>

私があなたのhtmlに加えた変更に注意してください。

于 2013-05-10T09:44:13.973 に答える
1

この方法でページ間でデータを渡すことはできません。b.php へのデータのポストとリダイレクトは、2 つの異なる要求です。

リダイレクトを介してデータを渡したい場合は、GET パラメータを使用します。

window.location.href = "b.php?value="+$('#value').val();

また、b.php に直接フォームを送信することも役に立ちます。

<form action="b.php" method="post">
    <input name="value" />
    <input type="submit" />
</form>
于 2013-05-10T09:36:44.603 に答える
0
これを試してみてください。これが役立つと思います。
ここでは、2 つのページを作成します。
1 つは a.php で、もう 1 つのページは b.php です。

a.php

<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script>
      $(document).ready(function() {
        var abc='';
        $('#submit').click(function() {
        var abc=$('#abc').val();
          $.ajax({
            url: 'b.php',
            dataType: 'html',
            type: 'POST',
            data: { 
              value: abc
            },
            error: function(xhr) {
              console.log('ajax went wrong!');
            },
            success: function(response) {
              console.log(response);
                var stateObj = { foo: "b" };
                history.pushState(stateObj, "page 2", "b.php?value="+response);
                $('#hid').hide();
                $('#res').html(response);
            }
          });

        });
      });
    </script>

    <html>
    <body>
         <div id="hid">
            Value: <input type="text" id="abc" /> <input type="button" id="submit" value="Get Value" /><br>
        </div>
    <div id="res"></div>
    </body>
    </html>

b.php

<?php
echo $_REQUEST['value'];
?>
于 2013-05-10T11:37:59.787 に答える
-1

使用する

$_request['value'] の代わりに $_post['value']

于 2013-05-10T09:36:42.227 に答える