前端向后端传递数组:
前端代码:
<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传递,这样的传递参数会比较多,但是也是可以的。