简体   繁体   English

PHP的JavaScript形式序列化获取数据未定义的索引

[英]php javascript form serialize get data undefined index

I want to call input value from javascript My home page code : 我想从javascript我的主页代码中调用输入值:

<form method="post" id="form">
                  <div class="row">
                    <div class="col-md-6">
                      <label for="f_name">First Name</label>
                      <input type="text" class="form-control" name="f_name "id="f_name" value="">
                    </div>
                    <div class="col-md-6">
                      <label for="l_name">Last Name</label>
                      <input type="text" class="form-control" name="l_name" id="l_name" value="">
                    </div>
                  </div>

.... javascript code : .... javascript代码:

$("#singup_btn").click(function(event){
    event.preventDefault();
    $.ajax({
      url     : "register.php",
      method  : "POST",
      data    : $("form").serialize(),
      success : function(data){
        alert(data);
      }
    })
  })

...calling page code : ...呼叫页面代码:

<?php

include "db.php";

    $fname = $_POST["f_name"];
    $lname = $_POST["l_name"];
...
echo $fname;

...error while click button, only last name (input) value defined ...单击按钮时出错,仅定义了姓氏(输入)值

<br />
<b>Notice</b>:  Undefined index: f_name in <b>D:\xampp\htdocs\shop\register.php</b> on line <b>5</b><br />
<br />
<b>Notice</b>:  Undefined index: email in <b>D:\xampp\htdocs\shop\register.php</b> on line <b>7</b><br />
<br />
<b>Notice</b>:  Undefined index: password in <b>D:\xampp\htdocs\shop\register.php</b> on line <b>8</b><br />

please someone help me? 请有人帮我吗? I stuck like more than 4 hours on this. 我在上面停留了超过4个小时。 Im learning javascript n php, n still newbie. 我正在学习javascript n php,n还是新手。 Please help. 请帮忙。 thanks. 谢谢。

You are missing a # You also have an error in your first input field. 您缺少#您在第​​一个输入字段中也有错误。

<input name="f_name ">

shouldbe

<input name="f_name">

$("#singup_btn").click(function(event){
    event.preventDefault();
    $.ajax({
        url     : "register.php",
        method  : "POST",
        data    : $("#form").serialize(),
        success : function(data){
            alert(data);
        }
    })
})

try this code 试试这个代码

$(document).on('click', '#singup_btn', function() {
    $.ajax({
        url     : "register.php",
        type    : "POST",
        data    : $("#form").serialize(),
        success : function(data){
            alert(data);
        }
    });
});

Please remove type="submit" from submit button and add type="button". 请从提交按钮中删除type =“ submit”并添加type =“ button”。 It will work! 会工作的!

Serializing the form with a space in name="f_name "id="f_name" forces a + to be appended to the serialized value. 使用name="f_name "id="f_name"的空格对表单进行序列化会强制在序列化值后附加+ This is why its not being picked up correctly server side. 这就是为什么服务器端无法正确拾取它的原因。


Expected server side value 预期的服务器端价值

f_name=asd&l_name=asd

Actual server side value 实际服务器端值

f_name+=asd&l_name=asd

see test below 见下面的测试

 $("button").click(function() { //output values before serialization console.log( "Result of f_name"); console.log ($("#f_name").val() ); console.log( "Result of l_name"); console.log ($("#l_name").val() ); //output values after serialization var serialized = $("form").serialize(); console.log( "Result: Notice how f_name has an appended + in its key"); console.log( "'" + serialized + "'"); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form method="post" id="form"> <div class="row"> <div class="col-md-6"> <label for="f_name">First Name</label> <input type="text" class="form-control" name="f_name "id="f_name" value=""> </div> <div class="col-md-6"> <label for="l_name">Last Name</label> <input type="text" class="form-control" name="l_name" id="l_name" value=""> </div> </div> <button type="button"> test </button> </form> 

Credit to Chris 归功于克里斯

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM