2013-05-10 61 views
0

我完全被以下情况弄得...POST数据重定向页面无法

局势

后数据a.php只会到 b.php和重定向到 b.php ...但失败

CODE - 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> 

CODE - b.php

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

a.php只会可以从正确的反应b.php没有重定向功能。但是,一旦我包含语句window.location.href = "b.php";, a.php将重定向到 b.php但不打印任何东西。 这种情况为什么会发生? 有没有解决方案来解决这个问题?

谢谢!

+0

我不知道如果我失去了一些东西,但你为什么不发布该数据到通常页面(例如通过表单提交)。你必须使用ajax然后重定向吗? – Toddish 2013-05-10 09:36:40

+0

@Toddish:我打算在_b.php_上处理_value_而不是_a.php_ – user2364801 2013-05-10 09:55:02

回答

1

你不能以这种方式在页面之间传递数据。将数据发布到b.php并重定向到它 - 是两个不同的请求。

如果要通过重定向来传递数据

- 使用GET PARAMS:

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

也构成直接提交给b.php可以帮助你。

<form action="b.php" method="post"> 
    <input name="value" /> 
    <input type="submit" /> 
</form> 
+0

谢谢!你的解决方案非常优雅!但是,你会建议如何处理这种情况?如果我处理脚本中的所有事件,维护似乎更容易。 – user2364801 2013-05-10 10:08:17

+0

@ user2364801:如果不需要任何特定的数据预处理,那么html-form将是更好的解决方案。但是如果数据在被发送到另一个页面之前必须修改 - js是可以的。两种方式都有权存在。哪个更好 - 取决于需求。 – 2013-05-10 22:37:41

-1

使用

$ _ POST [ '值']而不是$ _REQUEST [ '值']

+0

这对于为新的get请求“保存”发布数据有何帮助? – 2013-05-10 09:43:42

+0

但我们得到的数据是通过ajax调用post方法到b.php,所以要打印他必须使用$ _post而不是$ _request – praveen 2013-05-10 09:47:55

+0

$ _request包含$ _post。默认情况下它包含$ _get,$ _post和$ _cookie。使用$ _post只是指定您希望通过'POST'方法发送数据的方法。但它不是OP的问题。 – 2013-05-10 09:53:03

1

所以,每当你点击submit按钮,您的所有表单数据将被传输到b.php(您将自动重定向到b.php页),也可以访问$_POST['value']你只需要一个<form>。这很简单。不需要拨打$.ajax

<form id="myFrm" name="myFrm" method="post" action="b.php"> 
    value: <input type="text" id="value" name="value"> 
    <input type="submit" id="submit" name="submit" value="submit"> 
</form> 
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所做的更改。

+0

感谢您的回答,让我看到了我发送的请求! – user2364801 2013-05-10 10:10:07

0
Try this one, i think this will help you. 
Here i create two pages. 
one is a.php and another page is 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']; 
?>