【发布时间】:2015-11-19 04:18:17
【问题描述】:
我正在尝试构建一个具有 2 个功能的简单网络: 1. 从服务器获取字符串(短信)消息,并显示在屏幕上 2. 发送(发布)表单数据到服务器,服务器发回数据,这些数据将被记录。
服务器代码:
app.get('/sms', function (req, res) {
var smsMsg = fs.readFileSync('sms.txt');
console.log('Read File: ' + smsMsg.toString());
res.send(smsMsg.toString());
})
app.post('/result', function (req, res) {
console.log('Got Personal Information: ' + req.body.firstName + " " + req.body.lastName);
response = {
first_name:req.body.firstName,
last_name:req.body.lastName,
id:'0399'
};
console.log(response);
// value to a JSON string
res.setHeader('Content-Type', 'application/json');
res.send(JSON.stringify(response));
})
客户端代码:
<body>
<p>
<button onclick="sendRequestForSms()"> Get SMS From Server </button>
</br>
<h1 id="smsId"> SMS: <h1>
</br>
</p>
<p>
<form action="/result" method="post">
<fieldset>
<legend>Personal information:</legend>
First name:
<input type="text" name="firstName">
<br>
Last name:
<input type="text" name="lastName">
<br>
<input type="submit" value="Submit" id="submit">
</fieldset>
</form>
</p>
<script type="text/javascript">
var xmlhttp;
if (window.XMLHttpRequest)
{
xmlhttp = new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function()
{
console.log('State: ' + xmlhttp.readyState + ' status: ' + xmlhttp.status);
// 1: server connection established
// 4: request finished and response is ready
// 200: "OK"
// 404: Page not found
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
if (xmlhttp.getResponseHeader('Content-Type') == 'application/json')
{
console.log('Got Json');
var myArr = JSON.parse(xmlhttp.responseText);
console.log(myArr);
}
else
{
document.getElementById("smsId").innerHTML = xmlhttp.responseText;
}
}
};
function sendRequestForSms() {
xmlhttp.open("GET", "/sms", true);
xmlhttp.send();
}
</script>
</body>
当用户点击“从服务器获取 SMS”时,我会得到结果并将其显示在相关元素 ('smsId') 上。
但是 :( 当用户提交表单时,我会得到带有 json 数据的新页面(例如:'{"first_name":"test1","last_name":"test2","id" :"0399"}') 所以我的客户端代码行:
console.log('Got Json');没有到达,为什么没有调用客户端回调函数?
我做错了什么?
【问题讨论】:
-
您没有任何代码来处理它,因此浏览器会发布表单并正常加载结果。
-
服务器打印
Got Personal Information?
标签: javascript json ajax node.js