ユーザーが何を入力したかどうかに応じて操作するJSONオブジェクトを返すAJAX呼び出しを行うユーザーフォームがあります。エラーが発生した場合 (たとえば、ユーザーが入力フィールドに何も入力していない場合)、入力ボックス名がエラー メッセージと共に返され、エラー配列に格納され、JSON オブジェクトで返されます。これは、入力ボックス名を取得し、jQuery を使用して DOM で検索し、エラーのある入力ボックスの後にエラー メッセージを含むスパンを配置するためです。私が抱えている問題は、JSON オブジェクトで返されたエラーをループすると、エラーのキー (入力名) にアクセスできず、配列の位置 (0,1,2,3,4 など) のみにアクセスできることです。 )。JSON/jQuery オブジェクトの関連配列キーにアクセスできますか、それともどこかで間違っていますか?
これが私のコードです(関連するコードのみを含めました):
これは AJAX コール リターンです。
success : function(data) {
if(data.errors == 'undefined' && data.errors == null) {
...
} else {
jQuery(data.errors).each(function(k, v) {
var html = "<span class='inputError'>" + v + "</span>";
var errorSpan = '.signUpInputWrap input[name=' + k + ']';
...
});
}
}
そのため、DOM でアクセスできるように、「k」(json で返される入力ボックス名) を使用しようとしていることがわかります。代わりに配列の位置を使用しますが、返された名前を使用する代わりに。
エラー配列を生成して返す PHP は次のとおりです。
$result = $this->validateInput($post);
..
if($result['result'] == true) {
...
} else {
echo json_encode(array('errors' => $result['errors']));
}
private function validateInput($input) {
$errors = array();
foreach($input as $key => $inputItem) {
if($key == 'sports_instructed' || $key == 'activities_qualified' | $key == 'sports_qualified') {
continue;
}
if(empty($inputItem)) {
if($key == 'dob' || $key == 'dobMonth' | $key == 'dobYear') {
$errors['dob'] = "Please ensure all values are entered for date of birth";
unset($input[$key]);
}
$pieces = explode('_', $key);
foreach($pieces as &$piece) {
$piece = ucfirst($piece);
}
$name = implode(" ", $pieces);
$errors[$key] = "Please enter a value for " . $name;
}
}
if(empty($errors)) {
$result = array('result' => true);
} else {
$result = array('result' => false, 'errors' => $errors);
}
return $result;
}
JSON の結果は次のとおりです (ご覧のとおり、キーは、jQuery を使用してループ内の要素を取得するために使用する入力名です)。
{"errors":{"first_name":"Please enter a value for First Name","last_name":"Please enter a value for Last Name","telNum":"Please enter a value for TelNum","dob":"Please ensure all values are entered for date of birth","dobMonth":"Please enter a value for DobMonth","address":"Please enter a value for Address","city":"Please enter a value for City","county":"Please enter a value for County","postcode":"Please enter a value for Postcode","password":"Please enter a value for Password","password_confirm":"Please enter a value for Password Confirm"}}
PHP と同じように、Javascrip/jQuery で関連配列にアクセスすることはできますか? ありがとう