Ajax数据 – 未捕获的ReferenceError:未定义日期

我正在使用Ziptastic,但我收到此错误:

未捕获的ReferenceError:未定义日期

statezip = statezip(); alert(statezip); function statezip() { var twostate; $.ajax({ url: "http://zip.elevenbasetwo.com/v2/US/10010", dataType: 'json', async: false, data: {}, success: function (data) { twostate = date.state; return twostate; } }); } 

为什么我会收到此错误?

你有一个错字

 date.state 

它应该是:

 data.state 

顺便说一下,不建议使用

 async: false 

因为所有的JavaScript都在等待ajax请求有响应。 它会减慢你的应用程序,绝对不是一个好用的做法。

这是一个错字( date => data ):

  success: function(data) { twostate = date.state; return twostate; } 

应该:

  success: function(data) { twostate = data.state; return twostate; } 

错字

twostate = date .state ;

应该是twostate = data .state ;

我想你可能会在成功处理程序中遗漏一些东西。 通常,我希望看到类似的东西:

 success: function(data) { var twostate = data.date.state; return twostate; } 

但这是一个危险的假设,数据以“日期”字段返回。

在我看来,更好的是:

 success: function(data) { var twostate = (data.date ? data.date.state : ""); return twostate; } 

这样你就可以在尝试从null对象中提取某些东西之前测试data.date的存在。

如果状态只是从数据返回的字段,那么您可能会遇到一个简单的拼写错误,您需要将“date.state”更改为“data.state”。 在任何情况下,你应该在返回它之前改变你的“twostate”变量,或者只是去除它并像这样发回“data.state”:

 success: function(data) { return data.state; }