<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="language.js"></script>
<title></title>
</head>
<body>
<button id="a1">中文</button>
<a id="a2">香蕉</a>
<a id="a3">苹果</a>
<button id="a4">英文</button>
<script>
$("#a1").click(function() {
cl(this);
});
</script>
<script>
$("#a4").click(function() {
for(var i = 2; i <= 3; i++) {
var s = document.getElementById("a" + i).innerHTML;
document.getElementById("a" + i).innerHTML = getjson(s);
//
}
});
</script>
</body>
</html>
function getjson(key) {
var result = "";
$.ajax({
type: "get",
url: "a2.json",
contentType: "application/json; charset=utf-8",
dataText: "jsonText",
async: false,
cache: false,
dataType: "json",
success: function(result) {
// alert(result);
for(var item in result) {
if(item == key) { //item 表示Json串中的属性,如'name'
var jValue = result[item]; //key所对应的value
return jValue;
}
}
}
});
}
把你想要的值赋给你定义的result然后返回 或者把你的赋值操作放到success里面。你这返回的是啥 你自己看看
function getjson(key) {
var result = "";
$.ajax({
type: "get",
url: "a2.json",
contentType: "application/json; charset=utf-8",
dataText: "jsonText",
async: false,
cache: false,
dataType: "json",
success: function(res) {
// alert(result);
for(var item in res) {
if(item == key) { //item 表示Json串中的属性,如'name'
result = result[res]; //key所对应的value
}
}
}
});
return result;
}
后面那里result = res[item] 打错了
少了jquery的构造器
<script>
$(function(){
// click事件拷贝进来
});
</script>
不知道你返回的是什么数据
但是jq for循环这种写法item是result的下标而不是Json串中的属性
解决问题的能力是一个人在编程这条路上的必须掌握的技能
解决思路:
1:排查是否是ajax跨域问题
success,alert,如果有对应值,则没问题,若没有可以参照网上的ajax跨域的解决方法
2:数据问题
返回的json字符串是否符合json标准,可以使用 JSON.parse(result);看是否能正确转为json对象。如有问题参照json标准修改数据直至正确
还有dataType: "json",//数据类型可以为 text xml json script jsonp,不部分都是用json,然后操作json对象,而不是json字符串
3:jquey使用问题
jquery一般用$.each, for( )一般是java中的使用习惯
4:在判断前输出比较的两个值,0 与 '0'是不一样的
5:数据输出到页面
可以将输出操作放到success中,防止异步问题,尽管你写了async: false,。
你这个return jValue; 应该只是推出了success的那个方法吧? 要return的话,应该是需要在外层保存一个变量,然后result = jValue;最后再return result;
你的key传过去了么
var dataObj = result;
$.each(dataObj, function (index, item) {
if(item == key) { //item 表示Json串中的属性,如'name'
var jValue = item; //key所对应的value
return jValue;
}
});
这样写循环试试
http://blog.csdn.net/qq_38005982/article/details/77847376 我自己写的你可以看看
你先学会怎么用debugger 会用debugger调试js 调试才是解决问题的最佳途径~ 也是学习进步的最快方法~ 不会调试 永远都是要靠猜~
出于安全考虑,浏览器是不允许直接访问本地文件js,需要搭建本地服务器,或者解除浏览器这一限制;
提问者自己也是新手,关键还坐等答案,自己不去调试,chrome浏览器f12错误写的明明白白。