Windows核心編程_Miniblin(5) 前後端交互數據

前端向後端傳遞數組:

前端代碼:

<script>           
function myFunction()

{
    var arrayObj = new Array();
	arrayObj[0] = "張飛";
	arrayObj[1] = 15;
	arrayObj[2] = 1.75;
	arrayObj[3] = "男";
	arrayObj[4] = "教師";
    msgBox(arrayObj[0],arrayObj[1],arrayObj[2],arrayObj[3],arrayObj[4]);
}   

 </script>

msgBox可以傳遞多個參數,但是這樣的寫法不是很規範,後面教大家使用json傳遞,後端使用json解析

這樣只需要msgBox(json); 就可以了,這樣一個一個寫入msg的參數列表裏

後端代碼:

jsValue JS_CALL js_msgBox(jsExecState es)
{
	const wchar_t* Name = jsToStringW(es, jsArg(es, 0));
	int age = jsToInt(es, jsArg(es, 1));
	double height = jsToDouble(es, jsArg(es, 2));
	const wchar_t* gender = jsToStringW(es, jsArg(es, 3));
	const wchar_t* occupation = jsToStringW(es, jsArg(es, 4));
	wchar_t Msg[1024] = { 0 };
	swprintf_s(Msg, L"姓名:%s\n年齡:%d\n身高:%0.2lf\n性別:%s\n職業:%s\n", Name, age, height, gender, occupation);
	MessageBox(NULL, Msg, L"前端返回值", 1);
	return jsStringW(es, L"獲取成功");

}

注意wsprintf不可以轉換double所以使用c自帶的_s是安全的函數

運行截圖:

後端向前端傳遞:

後端代碼:

jsValue JS_CALL js_msgBox(jsExecState es)
{
	jsValue jv = jsEmptyObject(es);	   
	jsValue name = jsStringW(es, L"張飛");
	jsValue arg = jsInt(23);
	jsValue height = jsDouble(1.73);
	jsSet(es, jv, "name", name);
	jsSet(es, jv, "arg", arg);
	jsSet(es, jv, "height", height);
	return jv;

}

前端代碼:

function myFunction()

{
    var arrayObj = msgBox("");
	alert(arrayObj.name);
	alert(arrayObj.arg);
	alert(arrayObj.height);
}   

結果:

 

下次教大家使用json傳遞,這樣的傳遞參數會比較多,但是也是可以的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章