2013-05-10 2 views
0

Я был полностью смущен следующей ситуацией ...POST данных для перенаправления страницы сбоя

ситуации

почтовых данными 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, но без печати ничего. Почему эта ситуация происходит? Есть ли решение исправить это?

Спасибо!

+0

Я не уверен, если я что-то не хватает, но почему бы вам не просто POST данные в (например, по форме). Вам нужно использовать ajax, а затем перенаправить? – Toddish

+0

@Toddish: Я планирую обрабатывать _value_ на _b.php_ вместо _a.php_ – user2364801

ответ

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

+0

@ user2364801: Если вам не нужна какая-либо конкретная предварительная обработка данных, тогда html-форма будет лучшим решением. Но если данные должны быть изменены до отправки на другую страницу - js в порядке. Оба способа имеют право на существование. Что лучше - зависит от требований. –

-1

использование

$ _POST [ 'значение'] вместо $ _REQUEST [ 'значение']

+0

, как это поможет «сохранить» данные для нового запроса 'get'? –

+0

, но данные, которые мы получаем, - это метод ajax call post для b.php, поэтому для печати он должен использовать $ _post вместо $ _request. – praveen

+0

$ _request содержит $ _post. по умолчанию он содержит $ _get, $ _post и $ _cookie. использование $ _post - это просто способ указать, что вы ожидаете данные, отправленные методом POST. но это не проблема ОП. –

1

Вам просто нужно <form> так, что при нажатии на кнопку submit ваши все данные формы будут переданы b.php (Вы будете автоматически перенаправлены на страницу b.php), и вы можете там получить доступ к $_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> 
1

Ваш код ajax работает. Он вызывает url b.php и печатает значение для вывода. Однако результат не тот, который вы ожидаете.

Когда вы сделали вызов ajax и отправили данные в форме, оценка b.php будет в ответе, когда запрос ajax будет успешным.Попробуйте сделать следующее изменение:

От

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']; 
?> 

Это Аякса подход. Но если вам нужно передать только значение в форме 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

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']; 
?> 
Смежные вопросы