Php 发布数据以重定向页面失败

Php 发布数据以重定向页面失败,php,javascript,jquery,Php,Javascript,Jquery,我完全被以下情况弄糊涂了 处境 将数据从a.php发布到b.php并重定向到b.php…但失败 代码 -a.php $(文档).ready(函数(){ $(“#提交”)。单击(函数(){ $.ajax({ url:'b.php', 数据类型:“html”, 键入:“POST”, 数据:{ 值:$('#value').val() }, 错误:函数(xhr){ log('ajax出错了!'); }, 成功:功能(响应){ 控制台日志(响应); window.location.href=“b.php

我完全被以下情况弄糊涂了

处境

将数据从a.php发布到b.php并重定向到b.php…但失败

代码 -a.php


$(文档).ready(函数(){
$(“#提交”)。单击(函数(){
$.ajax({
url:'b.php',
数据类型:“html”,
键入:“POST”,
数据:{
值:$('#value').val()
},
错误:函数(xhr){
log('ajax出错了!');
},
成功:功能(响应){
控制台日志(响应);
window.location.href=“b.php”;
}
});
});
});
价值:
代码 -b.php


a、 php可以从b.php获得正确的响应,而无需重定向函数。但是,一旦我包含语句
window.location.href=“b.php”,a.php将重定向到b.php,但不打印任何内容。
为什么会出现这种情况?
有什么解决办法吗

谢谢

使用


$\u post['value']而不是$\u request['value']

您不能以这种方式在页面之间传递数据。将数据发布到b.php和重定向到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>

您只需要一个
,这样每当您点击
提交
按钮时,您的所有表单数据都将传输到
b.php
(您将自动重定向到
b.php
页面),并且您可以在那里访问
$\u POST['value']
。这很简单。无需执行
$.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>

价值:

您的ajax代码正在运行。它调用url b.php并将值打印到输出。然而,结果并不是你所期望的

在进行ajax调用并以表单形式发送数据时,当ajax请求成功时,将响应对b.php的评估。尝试进行以下更改:

您将在消息框的输入中看到您发送的内容。遵循您的代码。注意:我添加了一个按钮来拨打电话:

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

$(文档).ready(函数(){
$(“#提交”)。单击(函数(){
$.ajax({
url:'ajax.php',
数据类型:“html”,
键入:“POST”,
数据:{
值:$('#value').val()
},
错误:函数(xhr){
log('ajax出错了!');
},
成功:功能(响应){
警报(响应);
控制台日志(响应);
//window.location.href=“b.php”;
}
});
});
});
价值:
ajax.php

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

这就是ajax方法。但是,如果只需要将表单中的值传递给b.php,则不需要ajax。只需创建一个表单并使用b.php,如下所示:

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


请注意我在您的html中所做的更改。

试试这个,我想这会对您有所帮助。 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,另一个是b.php a、 php


$(文档).ready(函数(){
var abc=“”;
$(“#提交”)。单击(函数(){
var abc=$('#abc').val();
$.ajax({
url:'b.php',
数据类型:“html”,
键入:“POST”,
数据:{
价值:abc
},
错误:函数(xhr){
log('ajax出错了!');
},
成功:功能(响应){
控制台日志(响应);
var stateObj={foo:“b”};
history.pushState(stateObj,“第2页”,“b.php?value=“+response”);
$('#hid').hide();
$('#res').html(回复);
}
});
});
});
值:
b、 php



我不确定我是否遗漏了什么,但你为什么不正常地将数据发布到页面上(例如,通过提交表单)。你必须使用ajax然后重定向吗?@Toddish:我计划在b.php而不是a.phphow上处理值。这有助于为新的
get
request“保存”post数据吗?但是我们获得的数据是通过ajax调用post方法发送到b.php的,所以要打印,他必须使用$\u post而不是$\u request$\u request包含$\u post。默认情况下,它包含$\u get、$\u post和$\u cookie。使用$\u post只是指定希望通过
post
方法发送数据的一种方式。但这不是OP的问题。是的,他使用POST方法发布数据,但之后只是一个简单的重定向,没有发布任何数据,因此重定向时,
$\u POST
将为空。谢谢!你的解决方案相当优雅!但是你建议用哪种方式来处理这种情况呢?如果我处理一个脚本中的所有事件,那么维护起来似乎更容易。@user2364801:如果不需要任何特定的数据预处理,那么html表单将是更好的解决方案。但是,如果数据在发送到另一个页面之前必须进行修改,那么js就可以了。这两种方式都有生存的权利。哪一个更好-取决于要求。感谢您的回答,让我看到了我发送的请求!
    <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>
<?php
echo $_REQUEST['value'];
?>
Try this one, i think this will help you. Here i create two pages. one is a.php and another page is b.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>
<?php
echo $_REQUEST['value'];
?>