将ajax发布数据发布到php文件

时间:2017-11-07 15:31:49

标签: javascript php jquery ajax

我正在尝试使用ajax制作表单。但是我将表单变量发送到php文件时遇到了一些问题。我得到错误:未定义索引:名称。 我检查chrome dev工具,我看到变量正在发送。但是当我在php文件中看到回声json_encode时,我得到空数组。所以我不知道我在哪里做错了。

文件Main.js



var name = $('#user_name').val();
var lname = $('#user_lastname').val();

function formLogin(name, lname)
{
$.ajax({ url: 'database/register.php',
     data: {
         'name' : name,
         'lname' : lname
     },
     type: 'post',
     dataType:'json',
     success: function(data) {
                  alert(data);
              }
});
}




Html表格:



<form class="circleForm" id="registerForm">
     Imię: <input type="text" id="user_name"><br>
     Nazwisko: <input type="text" id="user_lastname">
    <br>
<input class="btnCircle" type="button" id="submit" value="Przejdź dalej" onclick="formLogin(name, lname)">                    
 </form>
&#13;
&#13;
&#13;

Php代码:

  

$ dane = $ _POST;   echo json_encode($ dane);

Chrome开发者: enter image description here

我只想知道如何在php文件中回显这个变量(name,lname)register.php

序列化版本:

&#13;
&#13;
function formLogin() {
        var dane = $('form').serialize();
    $.ajax({
        url: 'database/register.php',
        data: {'dane': dane},
        method: 'post',
        success: function(data) {
            console.log(data);
        }
    });
  
}
&#13;
&#13;
&#13;

然后是结果控制台:

<pre class='xdebug-var-dump' dir='ltr'>
<small>D:\xampp\htdocs\szkola\database\register.php:8:</small>
<b>array</b> <i>(size=1)</i>
  'dane' <font color='#888a85'>=&gt;</font> <small>string</small> <font color='#cc0000'>''</font> <i>(length=0)</i>
</pre>
jquery-3.2.1.min.js:4 XHR finished loading: POST "http://localhost/szkola/database/register.php".

但是当我去http://localhost/szkola/database/register.php

我明白了:

d:\ XAMPP \ htdocs中\ szkola \数据库\ register.php:8: 数组(大小= 0)   空

2 个答案:

答案 0 :(得分:2)

您需要更改在Javascript中定义变量的方式,并在函数内声明它们,而不是在外部:

function formLogin(){

    var name = $('#user_name').val();
    var lname = $('#user_lastname').val();

    $.ajax({ url: 'database/register.php',
         data: {
             'name' : name,
             'lname' : lname
         },
         type: 'post',
         dataType:'json',
         success: function(data) {
             alert(data);
         }
    });
}

您需要以相同的方式更新HTML(formLogin()而不是formLogin(...,...)):

<form class="circleForm" id="registerForm">
     Imię: <input type="text" id="user_name"><br>
     Nazwisko: <input type="text" id="user_lastname">
    <br>
<input class="btnCircle" type="button" id="submit" value="Przejdź dalej" onclick="formLogin()">                    
 </form>

答案 1 :(得分:0)

尝试使用method代替type

HTML:

<form class="circleForm" id="registerForm">
    Imię:       <input type="text" id="user_name" name="name"><br />
    Nazwisko:   <input type="text" id="user_lastname" name="lname"><br />
    <input class="btnCircle" type="button" id="submit" value="Przejdź dalej" onclick="formLogin();">                    
</form>

JavaScript:

function formLogin() {

    // Serialize the form
    var data = $('form').serialize();

    // Ajax call
    $.ajax({
        url: 'database/register.php',
        data: data,
        method: 'post',
        dataType: 'json',
        success: function(data) {
            console.log(data);
        }
    });

}

另外请记住,您正在请求JSON,因此您必须在PHP文件中回显json_encode($array),否则将不会返回简单的字符串。