需求
有一个业务要在前端按钮事件利用ajax发送Post请求服务端数据进行比对。
代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<input type="button" value="异步请求服务器" onclick="alertParam()"/>
<script type="text/javascript">
function alertParam(){
var param = {};
var filters = {};
// var json = '{"filters":{"sapCode":"2013","materialsNo":"'+'859928081'+'","warehousename":"'+'A001'+'"},"pageNum":"1","pageSize":"10"}';
filters['sapCode'] = '2013';
filters['materialsNo'] = '859928081';
filters['warehousename'] = 'A001';
param['filters'] = filters;
param['pageNum'] = '1';
param['pageSize'] = '10';
//转换jsons
var sendJson = JSON.stringify(param);
// var sendJson = eval('('+json+')');
alert(sendJson);
console.log(sendJson);
var oReq = new XMLHttpRequest();//创建实例对象
oReq.open("POST", "http://12.12.123.1234:12345/stock/getStockList");// 传递的文件
oReq.setRequestHeader('Content-Type','application/json');//post 传值必写
oReq.send(sendJson);// 发送
oReq.onreadystatechange = function () {
if (oReq.readyState == 4) {
if (oReq.status == 200) {
var rspJson =JSON.parse(oReq.responseText);
var value = rspJson.value;
var pageInfoList = value.pageInfoList[0];
var areaCode = pageInfoList.areaCode;
var materialNo = pageInfoList.materialNo;
var enableNum = pageInfoList.enableNum;
var isThreeGuaranteesNegative = pageInfoList.isThreeGuaranteesNegative;
alert('库区'+areaCode+'.物料编码'+materialNo+'.可用库存'+enableNum+'.是否允许负库存'+isThreeGuaranteesNegative);
// if(领用数量<enableNum||isThreeGuaranteesNegative==1){
// 允许创建;
// }else{
// 不允许创建;
// }//end of 库存判断
}else{
alert("status="+oReq.status+",readyState="+oReq.readyState);
}//end of ajax
}
}
}
//向备件管理平台发送ajax请求
function qmsAjaxPost(){
var param = {};
var filters = {};
var json = '{"filters":{"sapCode":"2013","materialsNo":"'+'859928081'+'","warehousename":"'+'A001'+'"},"pageNum":"1","pageSize":"10"}';
filters['sapCode'] = '2013';
filters['materialsNo'] = '859928081';
filters['warehousename'] = 'A001';
param['filters'] = filters;
param['pageNum'] = '1';
param['pageSize'] = '10';
alert(json);
var oReq = new XMLHttpRequest();//创建实例对象
oReq.open("POST", "http://12.12.123.1234:12345/stock/getStockList");// 传递的文件
oReq.setRequestHeader('Content-Type','application/json');//post 传值必写
oReq.send(json);// 发送
oReq.onreadystatechange = function () {
if (oReq.readyState == 4) {
if (oReq.status == 200) {
var rspJson =jQuery.parse(oReq.responseText);
// var rspJson = oReq.responseText;
var value = rspJson.value;
var pageInfoList = value.pageInfoList[0];
var areaCode = pageInfoList.areaCode;
var materialNo = pageInfoList.materialNo;
var enableNum = pageInfoList.enableNum;
var isThreeGuaranteesNegative = pageInfoList.isThreeGuaranteesNegative;
alert('库区'+areaCode+'.物料编码'+materialNo+'.可用库存'+enableNum+'.是否允许负库存'+isThreeGuaranteesNegative);
if(crmForm.all.new_qty.DataValue<enableNum||isThreeGuaranteesNegative==1){
crmForm.all.new_name.SetFocus();
}else{
alert("可用库存不足,请确认库存数量!");
event.returnValue=false; //撤回
}//end of 库存判断
}else{
alert("status="+oReq.status+",readyState="+oReq.readyState);
}//end of ajax
}
}
}
</script>
</body>
</html>
值得一提的
1.JSON
大部分的浏览器都支持这两种方法,但在Crm4.0系统中行不通。
2.eval
eval('(' + jsonstr + ')');
可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 。
3.jQuery.parse()
var rspJson =jQuery.parse(oReq.responseText);
可以将json字符串转换成json对象。