簡體   English   中英

使用JQuery AJAX向PHP提交表單,返回數據為空

[英]Using JQuery AJAX to submit a form to PHP, return data is empty

當我在下面運行此代碼時,返回的“數據”為空字符串“ []”。 (至少通過Chrome控制台查看器查看)

如果我注釋掉“ event.preventDefault();” JS中的一行得到了頁面重新加載,正如預期的那樣,還有一個JSON字符串,其結果傳遞了JSONLint。 我知道PHP正在工作,因為我正在將新插入物插入mySQL數據庫,並且返回值有意義。

即使“ data”返回為空,一切似乎都可以正確運行...(即,我先獲得FIRST的console.log,其次是SECOND,然后是空字符串。)我只是無法獲得返回的“ data”值在JS上下文中。

我是Web開發的新手,不是編程的新手……但是有人發現菜鳥錯誤嗎? 我已經閱讀了大約12個類似的問題,並嘗試了許多事情,但沒有任何幫助...

提前致謝。

 $(document).ready(function() { $('form').submit(function(event) { var formData = { 'firstName': $('input[name=firstName]').val(), 'lastName': $('input[name=lastName]').val(), 'email': $('input[name=email]').val(), 'password': $('input[name=password]').val() }; $.ajax({ type: 'POST', url: 'createaccount.php', data: formData, dataType: 'json' }) .done(function(data) { console.log("SECOND"); console.log(data); }); console.log("FIRST"); event.preventDefault(); }); }); 
  input { border-radius: 5px; border-width: 1px; margin: 2px; } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="row"> <div class="col-lg-12 text-center"> <div class="col-lg-4"></div> <div class="col-lg-4 text-right"> <h1>Join website</h1> <form action="createaccount.php" method="post"> <label>First Name:</label><input type="text" name="firstName" /><br/> <label>Last Name:</label><input type="text" name="lastName" /><br/> <label>Email:</Label><input type="email" name="email" /><br/> <label>Password:</label><input type="password" name="password" /><br/> <input type="submit" value="Sign Up" name="submit" /> </form> </div> <div class="col-lg-4"></div> </div> </div> 

 <?php $firstName = $_POST["firstName"]; $lastName = $_POST["lastName"]; $email = $_POST["email"]; $password = $_POST["password"]; $submit = $_POST["submit"]; $errors = array(); $data = array(); if ($submit) { if (!$email) { $errors['email'] = "Email is required."; } else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $errors['validemail'] = "Valid email is required."; } if (!$password) { $errors['password'] = "Password is required."; } else { if (strlen($password) < 8) { $errors['passwordlength'] = "Password must be at least 8 characters long"; } if (!preg_match("#[AZ]+#", $password)) { $errors['passwordcaps'] = "Password must contain at least one Capital Letter"; } } if (empty($errors)) { require 'dbconnect.php'; $query="SELECT * FROM Users WHERE email='".mysqli_real_escape_string($link, $email)."'"; $result = mysqli_query($link, $query); $results = mysqli_num_rows($result); if ($results) { $errors['exists'] = "That email address is already registered."; } else { $firstName = mysqli_real_escape_string($link, $firstName); $lastName = mysqli_real_escape_string($link, $lastName); $email = mysqli_real_escape_string($link, $email); $password = md5(md5($email).$password); $query="INSERT INTO `Users` (`FirstName`, `LastName`, `Email`, `Password`, `IsRater`, `IsRatee`) VALUES('$firstName', '$lastName', '$email', '$password', '1', '1');"; if(!mysqli_query($link, $query)) { $errors['SQLQuery'] = "Failed SQL Insert" . mysqli_error($link); } else { $data['success'] = true; $data['message'] = 'Your account has been created!'; } } } if(!empty($errors)) { $data['success'] = false; $data['errors'] = $errors; } } echo json_encode($data); ?> 

PHP代碼在對表單數據執行任何操作之前會檢查$_POST['submit']是否已設置,但是您絕不會在formData設置。 嘗試:

    var formData = {
        'firstName': $('input[name=firstName]').val(),
        'lastName': $('input[name=lastName]').val(),
        'email': $('input[name=email]').val(),
        'password': $('input[name=password]').val(),
        'submit': 'on'
    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM