希望有人可以为我解决这个问题。
我有一个APP(http://www.bentinckfencing.co.uk/fence_calculator.php)
我有一个发送JSON编码字符串的php文件。
我正在使用jQuery
使用.ajax()
函数检索此字符串。在我拥有JSON字符串后,我以这种方式使用eval()
$.ajax({
type: "POST",
url: "ajax-test.php",
cache: false,
data: "choice=34",
success: function(data){
var myObject = eval('(' + data + ')');
//Now I set lots of variables in this manner and use them later in the script
var productName = myObject[0]['name'];
var productPrice = myObject[0]['price'];
var productID = myObject[0]['id'];
}
});
与往常一样,这种方法适用于除IE之外的所有浏览器,这会引发错误object doesn't support this property or method
我无法想象我哪里出错了......如果有人有时间帮忙,甚至查看我的应用程序,我会非常乐于助人:)
edit
我发现Ajax调用成功地在IE中检索数据。它是这样的字符串[{"name":" 12 inch Rock Face Gravel Board","ID":"106","price":"7.00"},{"name":" 12 inch Double Sided Gravel Board","ID":"108","price":"10.50"},{"name":" 12 inch Smooth Gravel Boards","ID":"109","price":"7.00"}]
所以现在我的问题归结为我现在如何处理JS的数据......任何想法都会很棒:)
答案 0 :(得分:1)
不要使用eval
,这是邪恶的。还要确保您的服务器发送正确的内容类型(application / json):
$.ajax({
type: 'POST',
url: 'ajax-test.php',
cache: false,
data: { choice: 34 },
dataType: 'json',
success: function(items) {
// TODO: some range checking on this array won't be useless
// before trying to access its elements
var productName = items[0].name;
var productPrice = item[0].price;
var productID = items[0].ID;
// TODO: do something useful with those variables
}
});
此外,您可能不需要cache: false
发送POST请求。这些可能是你从IE和GET请求得到的反应: - )
答案 1 :(得分:0)
这一行:
var productID = myObject[0]['id'];
应该是:
var productID = myObject[0]['ID'];
Javascript标识符区分大小写。