[英]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.