需求
有一個業務要在前端按鈕事件利用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對象。