未解决的 PHP 页面刷新而无需 Ajax


Unsolved PHP page refreshing without Ajax

请问,有人可以为我的问题发布更正和测试的错误代码吗?程序确实 - 22.php具有形式。当用户输入并单击"提交"按钮时,结果应从 23 .php 中获取,并在 22 日以div 显示.php

我已经尝试了下面的解决方案,但没有一个能解决我的问题;

1) 我更改为: $("#testform").submit(function(event){

2)我在末尾添加了"return false;",以防止它实际提交表单并重新加载页面。

3)清除我的浏览器缓存

我可以看到我的计算机发生了什么程序;

1) 单击提交后没有收到错误消息。

2)我可以看到页面的选项卡快速重新加载,并且输入的文本字段被清除。

3) 未显示错误消息或结果。

<html>    
    <head>
      <title>My first PHP page</title>
      <script type="text/javascript" 
         src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
      <script>
      $(document).ready(function() {            
        $("#btn").click(function(event){
           event.preventDefault();
           var myname = $("#name").val();
           var myage = $("#age").val();
           yourData ='myname='+myname+'&myage='+myage;
                $.ajax({
                  type:'POST',
                  data:yourData,//Without serialized                  
                  url: '23.php',
                  success:function(data) {
                     if(data){
                        $('#testform')[0].reset();//reset the form
			$('#result').val(data);
                        alert('Submitted');
                     }else{
                        return false;
                      }                        
                   };
                 });                    
            });             
         });
    </script>
   </head>
    <body>
      <form method="post" id="testform">
        Name:
        <input type="text" name="name" id="name" />Age:
        <input type="text" name="age" id="age" />
        <input type="submit" name="submit" id="btn" />
      </form>
	<div id='result'></div>
    </body>
</html>

<?php
if ( isset($_POST['name']) ) { // was the form submitted?
    echo "Welcome ". $_POST["name"] . "<br>";
    echo "You are ". $_POST["age"] . "years old<br>";
}

?>

你不需要

更改你的PHP代码尝试使用提交事件提交表单...

$("#testform").submit(function(event){
use `dataType:json`; in your ajax ..
 yourData =$(this).serialize();

你的 php

<?php
if ( isset($_POST['name']) ) { // was the form submitted?
   $data['name']= 'welcome '.$name;
   $data ['age']= 'you are '.$age;
print_r(json_encode($data));exit; 
}
?>

现在在您的成功功能

var message = data.name + ' ' + data.age;
$('#result').html(message );

您正在发送myname并在 php 中检查nameisset($_POST['name'])。不要使用 .value() .html() 进行数据渲染。控制台记录数据,并使用Firebug查看请求和响应。 你能试试这个吗?

待更改

var yourData ='name='+myname+'&age='+myage; // php is expecting name and age

$('#result').html(data); // here html()

代码变为

 $(document).ready(function() {            
    $("#btn").click(function(event){
       event.preventDefault();
      var myname = $("#name").val();
       var myage = $("#age").val();
       var yourData ='name='+myname+'&age='+myage; // php is expecting name and age
            $.ajax({
              type:'POST',
              data:yourData,//Without serialized                  
              url: '23.php',
              success:function(data) {
                 if(data){
                    $('#testform')[0].reset();//reset the form
        $('#result').html(data); // here html()
                    alert('Submitted');
                 }else{
                    return false;
                  }                        
               }
             });
           });
         });

尝试在 ajax 函数中像这样格式化帖子数据。

$.ajax({
  type:'POST',
  data : {
     myname: myname
     myage: myage
  }
  ...
}

编辑

尝试删除 中的;

 return false;
          }                    
       };

return false;
          }                    
       }

你可以在 ajax 和 php 两端进行更改:

@PHP:

您可以检查正确的发布数据,这些数据mynamemyage不是nameage

<?php
if ( isset($_POST['myname'])) { // was the form submitted?
    echo "Welcome ". $_POST["myname"] . "<br>";
    echo "You are ". $_POST["myage"] . "years old<br>";
}
?>

或@Ajax:

yourData ='name='+myname+'&age='+myage;
//--------^^^^^^----------^^^^----change these to work without changing php

刚刚注意到#result是一个div 元素。因此,您不能使用.val(),而是使用.html(), .append()等:

$('#result').html(data);
相关文章: