Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Ajax调用和返回结果_Php_Jquery_Html_Ajax - Fatal编程技术网

Php Ajax调用和返回结果

Php Ajax调用和返回结果,php,jquery,html,ajax,Php,Jquery,Html,Ajax,我不知道我在ajax调用中做错了什么。我想将数据返回到脚本并使用它,但它不会返回结果。以下是一些我想澄清的事情,我对ajax编程还不熟悉。如果ajax调用成功并将结果返回给脚本。结果将显示在脚本中的何处。我需要创建一个数组来保存结果还是。。。 这是html <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="reserveform"> <div id="respons

我不知道我在ajax调用中做错了什么。我想将数据返回到脚本并使用它,但它不会返回结果。以下是一些我想澄清的事情,我对ajax编程还不熟悉。如果ajax调用成功并将结果返回给脚本。结果将显示在脚本中的何处。我需要创建一个数组来保存结果还是。。。 这是html

   <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="reserveform">
    <div id="response"></div>
        <div>
        <label>Name</label><input type="text" name="name" id="nameid">
    </div>
    <div>
        <label>Phone Number</label><input type="text" name="phone" id="phoneid">
    </div>
        <div>
        <button type="submit" class="btn" id="btnsubmit">Submit</button>
    </div>
   </form>
         <div id="success"></div>


//my script

$('#btnsubmit').click(function(e){
    e.preventDefault();
        var nameid = $('#nameid').val();
    var phoneid = $('#phoneid').val();
        var validate_msg = '';
       if (nameid == ''){
        validate_msg = '<p> Name is Required. </p>';    
    }
    if (phoneid == '' || ($.isNumeric(phoneid) == false)){
        validate_msg += '<p> Phone field is either empty or non numeric. </p>';
    }

    if (validate_msg != ''){
    $('#response').addClass('error').html('<strong>Please correct the errors below </strong>' +  validate_msg);
    } else {
        var formData = $('form #reserveForm').serialize();
        submitForm(formData);
    }
});


    function submitForm(formData){
        $.ajax({
            type: 'POST',
            url: 'reservation.php',
            data:formData,
            dataType:'json',
            success: function(data){
                $("#success").html(data);
            },
            error: function(XMLHttpResponse, textStatus, errorThrown){
                    $('#success').removeClass().addClass('error').html('<p>There was an ' + errorThrown + ' due to ' + textStatus + 'condition');
            }
        });

    }
请试试这个

您必须将btnsubmit click事件放入onload或document ready中

$(文档).ready(函数()
{
$('#btnsupmit')。单击(函数(e){
e、 预防默认值();
var nameid=$('#nameid').val();
var phoneid=$('#phoneid').val();
var validate_msg='';
如果(nameid=''){
验证消息=“名称是必需的。

”; } if(phoneid=''| |($.isNumeric(phoneid==false)){ 验证_msg+='电话字段为空或非数字。

'; } 如果(验证消息!=''){ $(“#response”).addClass('error').html(“请更正下面的错误”“+validate\u msg); }否则{ var formData=$('form#reserveForm').serialize(); 提交格式(formData); } }); } );
你不能这样使用
$(“#success”).html(数据)如果您尝试
ajax表单提交
,并且需要在不刷新的情况下将结果填充到success div
,则需要
返回false

不要使用

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="reserveform">

我看到您已将表单配置为提交到已存在的同一文档中。这很好,我们一直都这么做

但是,您也会停止表单提交,然后使用AJAX提交值。您可以指定
reservation.php
作为ajax处理器。这是您已经在的同一个PHP页面吗?如果是这样,那么我知道问题是什么:你不能那样做

根据设计,AJAX必须使用外部PHP文件来处理AJAX。如果您试图在同一文档中执行此操作,AJAX将只回显文档本身的完整HTML

简短回答:使用外部PHP文件。这是故意的

有关此问题的详细信息,请参阅

有关AJAX的更多信息,请参阅其他文章,将信息输入PHP处理脚本,并从PHP处理脚本返回信息:


如果您的PHP文件(
$\u SERVER['PHP\u SELF']
)的名称是
reservation.PHP
,请参阅下面我的答案以获得解决方案。这个问题的解决是否令您满意?如果是,请接受答案以结束问题。否则,请发布其他信息,以便我们可以进一步帮助您。谢谢,我使用了一个名为process.php的外部脚本。如何获取新脚本中的数据。我是否仍然需要使用ajax的$\u POST手动获取数据,并发送值供我直接使用。@是否在我的回答中添加了其他示例,如上所述,如果请求成功,我尝试隐藏表单并显示消息。每次我尝试它时,它既不隐藏也不显示消息。我做错了什么?我试图进行必要的更正并创建一个外部文件,但我得到了这个奇怪的错误消息。“{”error:“Shell表单不验证{'html\u initial\u name':u'i…”以下是链接
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" id="reserveform">
<form id="reserveform" onsubmit="return submitForm();">
function submitForm(){
        var formData = $("#reserveform").serialize();
        $.ajax({
            type: 'POST',
            url: 'reservation.php',
            data:formData,
            dataType:'json',
            success: function(data){
                $("#success").html(data);
            },
            error: function(XMLHttpResponse, textStatus, errorThrown){
                    $('#success').removeClass().addClass('error').html('<p>There was an ' + errorThrown + ' due to ' + textStatus + 'condition');
            }
        });
        return false; // use this otherwise the form will be submitted and results an entire page refresh
    }