Windows核心编程_Miniblin(6) 前后端交互数据

前端向后端传递数组:

前端代码:

<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是安全的函数

运行截图:

Windows核心编程_Miniblin(6) 前后端交互数据

后端向前端传递:

后端代码:

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);
}   

结果:

Windows核心编程_Miniblin(6) 前后端交互数据

 

下次教大家使用json传递,这样的传递参数会比较多,但是也是可以的。

上一篇:Python之GUI编程


下一篇:lua 5.3最简单plugin编写