使用ajax以JavaScript提交和显示表单数据
我的任务是使用我的HTML/CSS/JavaScript/jQuery技能,根据以下要求解决一段代码: 要求: -通过添加用户功能使用ajax提交用户输入的数据。使用ajax以JavaScript提交和显示表单数据,javascript,jquery,ajax,json,forms,Javascript,Jquery,Ajax,Json,Forms,我的任务是使用我的HTML/CSS/JavaScript/jQuery技能,根据以下要求解决一段代码: 要求: -通过添加用户功能使用ajax提交用户输入的数据。 -您可以假设服务将以200状态响应。 -当添加用户服务以值为false的success属性响应时,在表单顶部以红色显示错误。将错误属性用作消息。 -当响应返回成功属性时,在用户列表中显示新用户 -当用户输入无效的电子邮件地址时,突出显示电子邮件输入。此外,以红色显示文本“请输入有效的电子邮件地址”。 注意:该服务将不提供此验证功能,并
-您可以假设服务将以200状态响应。
-当添加用户服务以值为false的success属性响应时,在表单顶部以红色显示错误。将错误属性用作消息。
-当响应返回成功属性时,在用户列表中显示新用户
-当用户输入无效的电子邮件地址时,突出显示电子邮件输入。此外,以红色显示文本“请输入有效的电子邮件地址”。
注意:该服务将不提供此验证功能,并将接受无效电子邮件
//example usage.
addUser('john', 'smith', function(response){
console.log('response is: ' + JSON.stringify(response));
});
/*
################################### DO NOT MODIFY BELOW THIS LINE ##########
############################################################################
*/
// Add user service wrapper.
function addUser(username, email, callback) {
var response;
if(username === "Error"){
response = JSON.stringify({
success: false,
error: "Error is not acceptable username."
});
} else {
response = JSON.stringify({
success: true,
user: {
username: username,
email: email
}
});
}
$.ajax({
url: '/echo/json/',
type: "post",
data: {
json: response
},
success: callback
});
};
以下HTML适用于:
<h2>Add a User:</h2>
<form>
<input type="text" name="username" placeholder="name">
<input type="email" name="email" placeholder="email">
<button>add user</button>
</form>
<h2>Users:</h2>
<ul id="users"></ul>
好吧,希望你还和我在一起。我对面向对象的JavaScript以及jQuery、HTML和CSS有很强的理解。但是,我对AJAX的经验很少,对JSON语法/应用程序的经验也很少。因此,这个项目的某些方面对我来说似乎非常简单,我不认为我需要帮助来弄清楚它们我已经知道如何正确处理的事情包括:
- 在表单上方以红色显示错误(检索错误信息是另一回事)
- 在无序列表部分显示新用户
- 输入无效电子邮件地址时突出显示电子邮件输入(使用客户端验证)
//编辑//到JSFIDLE工作流的更新链接,带有正确的jQuery选择器和显示错误消息/用户输入的附加功能:问题在于您忘记了代码中的
#
(id):
将代码更改为
$(document).ready(function(){
$('#button').click(function(){
$userInput = $('#username').val();
$emailInput = $('#email').val();
addUser($userInput,$emailInput,function(response){
$('#users').html(JSON.stringify(response));
});
});
});
这里是。JSON/string问题是一个关于JSON和JSON对象的小实验/熟悉的问题,但是需要大量的解释来代替小测试,所以我将重点关注问题的第2部分和第3部分。也许其他人比我更能解决第一部分的问题 AJAX代码块(1)使用值定义一些变量,(2)将它们传输到服务器端脚本进行处理,(3)从服务器接收响应 “旧”结构(我们现在使用Promises接口)是设想AJAX工作原理的最简单方法:
$.ajax({
type: "POST",
url: "pagename.php",
data: "varName=" +varValue+ "&nextVarName=" + nextVarValue,
success: function(returned_data) {
//Var returned_data is ONLY available inside this fn!
alert("Server said: " + returned_data);
}
});
在服务器端(本例使用PHP):
您可能也想看看。当然,我以前使用core JS来处理这个项目,直到最近才实现jQuery,我忘记了那个特殊的语法怪癖。谢谢你指出这一点,看到一些进展令人耳目一新!你的小提琴不起作用了……你忘记了username
和email
中的
#`(id)谢谢,我忘了指出我正在使用“#”符号基于这些HTML元素的id创建一个jQuery对象。有些事情我不能完全理解,与addUser()调用中提供的回调函数有关。如果“response”是一个直到addUser()开始运行才声明的变量,那么在这种情况下,它怎么可能作为参数发送?我看不出变量“response”在这段代码的进程中有什么意义。在JQuery ajax中,有一个成功回调函数处理来自服务器的响应,例如success:function(responseData){}。在您的例子中,您可以注意到ajax方法中有一个代码片段success:callback,其中callback是一个函数,其中response是您提供给addUser的一个参数
$(document).ready(function(){
$('#button').click(function(){
$userInput = $('#username').val();
$emailInput = $('#email').val();
addUser($userInput,$emailInput,function(response){
$('#users').html(JSON.stringify(response));
});
});
});
$.ajax({
type: "POST",
url: "pagename.php",
data: "varName=" +varValue+ "&nextVarName=" + nextVarValue,
success: function(returned_data) {
//Var returned_data is ONLY available inside this fn!
alert("Server said: " + returned_data);
}
});
<?php
$one = $_POST['varName']; //$one contains varValue
$two = $_POST['nextVarName']; //$one contains nextVarValue
//Do something with the received data, for eg a MySQL lookup
$result = mysql_result(mysql_query(some lookup),0);
$out = '<h1>Server says:</h1>';
$out .='<p>For the purpose of this test, the server sends back:</p>';
$out .= $result;
echo $out; //NOTE: uses echo, not return