第1部分:应用场景
华仔在结合jquery mobile 开发手机网页端的时候,运用js中function进行数据传递时,发现返回的都是undefined,当时一头雾水,不知道如何是好。
第2部分:解决方案
经过好几轮尝试和资料查找,发现问题有迹可循,我使用的是ajxa进行post,直接在ajxa的success方法中进行返回,通过了解,这个方法返回并不代表整个function返回,这也就表示ajxa其实不适用于用return,因为即使用了,也不能跳出整个function,将所需数据真正返回给调用这个function的地方,后面我就修改思路,改成了利用ajxa中success方法对变量进行赋值,然后在外面进行return这个变量,具体代码如下:
function JudgeProduct(gx) { var data = { StripOrderNo: document.getElementById("加工单号").value, Todo: "JudgeProduct", gx: gx, }; var status01; $.ajax({ type: "POST", ContentType: "application/json", url: "http://XXXXXXXXXXXXXXXXXXXX.ashx", data: data, timeout: 8000, async: false, dataType: 'json', success: function (data1, textStatus) { jsonObj.Rows = eval('(' + data1 + ')'); if (jsonObj.Rows[0].status != "Ok") { status01 = jsonObj.Rows[0].status; return status01; } else { status01 = "Ok"; return status01; } }, error: function () { alert('服务器连接有点问题,稍会再试。'); } }); return status01; }
JavaScript中返回值出现undefined的结论
在手机端开发的过程中,深感调试不便,不过慢慢的也就习惯了,操作起来也会更加娴熟,遇到问题多思多查。此外还有以下几个原因会导致返回值为undefined:
1、我们在function中return的变量赋值确实错了
2、我们在function中没有在所有的判断路径上都写上返回值
这两个问题同visual basic(vb.net)是一样的
© 版权声明
THE END
暂无评论内容