前端向後端傳遞數組:
前端代碼:
<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傳遞,這樣的傳遞參數會比較多,但是也是可以的。