當我呼叫該函式時,我總是得到一個未定義的值,我不明白什么會破壞它。
您以未定義身份登錄,錯誤未定義
阿賈克斯腳本:
function Submit() {
console.log('asd')
$.ajax({
url: "Server.php",
type: "POST",
dataType: "json",
data: {name: 'Test2', email: '[email protected]'},
success:function(request, data, error){
console.log("You are logged in as " data.name);
},
error: function (request, error, data) {
console.log(arguments);
alert(" Can't do because: " error " DATA: " data);
}
})
}
PHP 腳本:
<?php
header("Content-type: text/html; charset=utf-8");
$errors = [];
$data = [];
if (empty($_POST['name'])) {
$errors['name'] = 'Name is required.';
}
if (empty($_POST['email'])) {
$errors['email'] = 'Email is required.';
}
if (!empty($errors)) {
$data['success'] = false;
$data['errors'] = $errors;
} else {
$data['success'] = true;
$data['message'] = 'Success!';
}
echo json_encode($data);
?>
uj5u.com熱心網友回復:
您想使用 data.name 但您從不回傳名稱。因此未定義。我在下面的示例中添加了 data.name ,它似乎作業正常。
<?php
header("Content-type: text/html; charset=utf-8");
$errors = [];
$data = [];
if (empty($_POST['name'])) {
$errors['name'] = 'Name is required.';
}
if (empty($_POST['email'])) {
$errors['email'] = 'Email is required.';
}
if (!empty($errors)) {
$data['success'] = false;
$data['errors'] = $errors;
} else {
$data['success'] = true;
$data['message'] = 'Success!';
$data['name'] = $_POST['name'];
}
echo json_encode($data);
?>
此外,succes 函式中使用的引數的順序與您似乎使用的順序不同,在您的情況下,request您的資料將包含在其中
uj5u.com熱心網友回復:
回呼引數不是
success:function(request, data, error)
但
success: function(data, textStatus, jqXHR)
data.name當然undefined因為它是string
你的 Server.php 回傳這個
{"success":true,"message":"Success!"}
不但是和data.name_data.successdata.message
所以你必須寫
if (!empty($errors)) {
$data['success'] = false;
$data['errors'] = $errors;
} else {
$data['success'] = true;
$data['message'] = 'Success!';
$data['name'] = $_POST['name']; // add this
}
uj5u.com熱心網友回復:
更新
你應該使用print_r()而不是echo
試試這個
$.ajax({
url: "Server.php",
type: "POST",
dataType: "json",
data: "{"name": "Test2", "email": "[email protected]"}",
success:function(request, data, error){
console.log("You are logged in as " data.name);
},
error: function (request, error, data) {
console.log(arguments);
alert(" Can't do because: " error " DATA: " data);
}
注意:使用 json 格式的雙引號。
我希望它有用
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/460808.html
標籤:javascript php jQuery json 阿贾克斯
