Долгосрочный читатель, первый раз постер. Я очень новичок в мире jQuery и JSON и вижу проблему с скриптом входа, который я запускаю.Возвращение данных JSON из файла PHP с использованием jQuery
Конечная цель - захватить данные из формы, передать эти данные в файл PHP для обработки через jQuery.ajax() post, сравнить данные с базой данных MySQL для аутентификации и вернуть данные для успеха отказ.
Моя проблема заключается в том, что я не могу передать форматированные данные JSON из PHP-скрипта обратно в jQuery. При просмотре обработки с помощью инструментов разработчика Chrome я вижу, что «Ошибка входа». Я дважды проверил массив $ rows, перебросив его в файл error_log, и он возвращает правильно отформатированный JSON, но я просто не могу на всю жизнь заставить его вернуться в файл jQuery. Любая помощь приветствуется.
Моя форма ввода:
<!-- BEGIN: Login Page -->
<section data-role="page" id="login">
<header data-role="header" data-theme="b">
<a href="#landing" class="ui-btn-left">Back</a>
<h1>Please Log In</h1>
</header>
<div data-role="content" class="content" data-theme="b">
<form id="loginForm" action="services.php" method="post">
<div data-role="fieldcontain">
<label for="schoolID">School ID</label>
<input type="text" name="schoolID" id="schoolID" value="" />
<label for="userName">Username</label>
<input type="text" name="userName" id="userName" value="" />
<label for="password">Password</label>
<input type="password" name="password" id="password" value="" />
<h3 id="notification"></h3>
<button data-theme="b" id="submit" type="submit">Submit</button>
<input type="hidden" name="action" value="loginForm" id="action">
</div>
</form>
</div>
<footer data-role="footer" data-position="fixed" data-theme="b">
<h1>Footer</h1>
</div>
</section>
<!-- END: Login Page -->
Мой JQuery Handler:
// Listen for the the submit button is clicked, serialize the data and send it off
$('#submit').click(function(){
var data = $("#loginForm :input").serializeArray();
var url = $("#loginForm").attr('action');
$.ajax({
type: 'POST',
url: url,
cache: false,
data: data,
dataType: 'json',
success: function(data){
$.ajax({
type: 'GET',
url: "services.php",
success: function(json){
alert(json);
$('#notification').append(json);
}
});
}
});
});
И вот моя обработка PHP:
if (isset($_POST['action'])) {
$schoolID = $_POST['schoolID'];
$userName = $_POST['userName'];
$password = $_POST['password'];
$sql = "SELECT FirstName, LastName, FamilyID, StudentID, UserID ";
$sql .= "FROM Users ";
$sql .= "WHERE SchoolID = '$schoolID' ";
$sql .= "AND Username = '$userName' ";
$sql .= "AND Password = '$password'";
$rs = mysql_query($sql);
$rows = array();
while($row = mysql_fetch_array($rs, MYSQL_ASSOC)) {
$row_array['firstName'] = $row['FirstName'];
$row_array['lastName'] = $row['LastName'];
$row_array['familyID'] = $row['FamilyID'];
$row_array['studentID'] = $row['StudentID'];
$row_array['userID'] = $row['UserID'];
array_push($rows, $row_array);
}
header("Content-type: application/json", true);
echo json_encode(array('rows'=>$rows));
exit;
}else{
echo "Login Failure";
}
«Передайте эти данные в файл PHP для обработки через jQuery» jQuery запускается на клиенте. PHP работает на сервере. Они никогда не встречаются. –
Я использую функцию $ .ajax() в jQuery для передачи данных JSON в PHP. Извините, я не очень хорошо объяснил это. – TheBrockEllis
Проблема, я думаю, может быть в том, что вы делаете 2 запроса, первые, возможно, отвечают на данные, которые вы хотите обработать второй, с данными, которые вы не делаете, поскольку условие в вашем php никогда не выполняется, также смотрите в используя [.submit()] (http://api.jquery.com/submit/) - [tut] (http://www.ryancoughlin.com/2008/11/04/use-jquery-to-submit- form /) возможно, условие никогда не выполняется? –