需要有关嵌套jquery函数的帮助

请在下面找到我的代码。 我的问题是我内部的jQuery.get()没有被执行。 有人可以帮我解决这个问题吗?

jQuery(document).ready(function() { $('.error').hide(); $(".button").click(function() { // validate and process form here $('.error').hide(); var zipCode = $("input#name").val(); if (zipCode == "") { $("label#name_error").show(); $("input#name").focus(); return false; } var key = 'ac9c073a8e025308101307'; var noOfDays = 5; var url = 'http://www.worldweatheronline.com/feed/weather.ashx?q=' + zipCode + '&format=json&num_of_days=' + noOfDays + '&key=' + key; alert(url); jQuery.get(url, function(test) { alert(url); $.each(test.data.weather, function(i, item){ $("body").append("

Date: "+item.date+"

"); if ( i == 3 ) return false; }); }, 'jsonp')(); }); });

我的html表单看起来像

 

我真的很感激任何指针。

谢谢!

您遇到的问题是您没有做任何事情来阻止您的表单被提交,因此它在有机会从worldweatheronline.com获取数据之前提交表单。

将您的点击处理程序更改为:

  $(".button").click(function(event) { event.preventDefault(); 

这是我完成的示例代码,它以您希望的方式工作:

       

打开Fiddler或Firebug并观看HTTP呼叫。 你会在那里看到HTTP错误消息。 此外,在Chrome或Firefox中打开控制台以查看潜在的JavaScript错误。

部分问题可能是.get()函数调用后的额外括号集。 你有:

 jQuery.get(url, function(test) { alert(url); $.each(test.data.weather, function(i, item){ $("body").append("

Date: "+item.date+"

"); if ( i == 3 ) return false; }); }, 'jsonp')();

它应该是:

 jQuery.get(url, function(test) { alert(url); $.each(test.data.weather, function(i, item){ $("body").append("

Date: "+item.date+"

"); if ( i == 3 ) return false; }); }, 'jsonp');

我想出去试试你试图对外部网站执行AJAX请求(基于url'http://www.worldweatheronline.com/feed/weather.ashx?q=' ) 。 这违反了相同的域策略 ,将无声地失败。