Springboot+neo4j+d3(项目负责部分笔记)

本文记录了一位开发者在Springboot项目中结合Neo4j数据库和d3.js进行前端可视化的过程,特别是阐述了AJAX异步通信在智能问答模块中的应用,详细介绍了从触发前端sendMsg()到xhr与服务器通信,最终在前端展示服务器响应的完整步骤。
摘要由CSDN通过智能技术生成

Springboot+neo4j+d3(项目负责部分笔记)


前言

刚刚完成了一个小项目,想通过CSDN记录下自己学到的东西

这是一个关于英国高校查询的项目,建立了neo4j存储数据,springboot建立项目,在前端d3可视化图谱。


文章只记录了我负责的部分

一、AJAX异步通信

由于设计了智能机器人问答模块,需要前端后端进行信息的交流,我采用的是Ajax通信。Ajax因为是异步的信息传递,所以可以实现动态的网页内容更新。
在这里插入图片描述

二、使用步骤

1. 前端触发sendMsg()

代码如下(示例):

<textarea id="msg_input" class="msgInput"></textarea> <!--document.getElementById('msg_input')-->
<button id="sendbtn" class="sendbtn">发送</button>    <!-- document.getElementById('sendbtn').onclick = function() -->
document.onkeypress = function(event) {
			var e = event || window.event;
			var keycode = e.keyCode || e.which;
			console.log(e)
			if (keycode == 13) {//按下enter键
				sendMsg()       
			}
		}

2. sendMsg(): 派xhr去与服务器联络

代码如下(示例):

function sendMsg() {
			var input = document.getElementById('msg_input');//查找缓存
			var ul = document.getElementById('content');  
			var newLi = document.createElement('li');//Document.createElement() 方法用于创建一个由标签名称 tagName 指定的 HTML 元素     
			newLi.innerHTML = input.value;               
			newLi.className = 'msgContent right';         
			ul.appendChild(newLi);                       
			var div = document.createElement('div');
			div.style = 'clear:both';                    
			ul.appendChild(div);

//后面还有

3. xhr请求过程, 成功拿到output会返回浏览器

//请求过程
	function ajax(obj) {
		var xhr = null;
		if (window.ActiveXObject) {//whether assisting ActiveX 
			xhr = new ActiveXObject('Microsoft.XMLHTTP')
		} else {
			xhr = new XMLHttpRequest();
		}

		//打开与服务器的连接
		if (obj.method) {//whether can sending message by this method
			xhr.open(obj.method, obj.url, true);
		} else {
			xhr.open('get', obj.url, true);
		}//setRequestHeader(属性名称,属性值) 进行跨域请求
		xhr.setRequestHeader("Content-Type",
				"application/x-www-form-urlencoded");
		xhr.setRequestHeader("Authorization",
				"APPCODE 3e9dfb924f464e9593a95f9d2bbf4348")

		xhr.onreadystatechange = function() {

			if (xhr.readyState == 4) {
				//数据接收完毕
				if (xhr.status == 200) {
					//console.log('请求成功',xhr.responseText)
					if (obj.success) {
						obj.success(xhr.responseText)
					}

				} else {
					//console.log(xhr.status,'请求出错')
					if (obj.failure) {
						obj.failure('请求失败')
					}
				}
			}
		}                                                 //now we get object, we test object's usability
		if (obj.method == undefined || obj.method.toLowerCase() == 'get') {
			xhr.send(null);
		} else {
			xhr.send(obj.params);

		}
	}

4. success: xhr从服务器里拿output

//服务器取得数据过程
			ajax({
				url : '/rest/appleyk/question/query?question='+ input.value, //input.value是缓存; xhr取得数据的后端位置
				success : function(res) {	
					console.log(res);//当与url位置成功取得联络时,在页面上显示	
					var newLi = document.createElement('li');
					newLi.innerHTML = res;//将res嵌入开始结束标签之间的html
					newLi.className = 'msgContent left';//即设为机器人的回复
					ul.appendChild(newLi);//添加到当前页面中

					var div = document.createElement('div');
					div.style = 'clear:both';//清除浮动,使得页面上的消息正常显示
					ul.appendChild(div);
					input.value = '';
					newLi.scrollIntoView();//聊天框滑动到可见部分
				}
			})

			input.value = '';
			newLi.scrollIntoView();                     
		}

	}

今天先记录关于前后端如何通信(欢迎大佬批评指正!)。后续加载中…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值