AJAX没有使用成功处理函数

时间:2013-12-13 01:23:06

标签: javascript ajax json jquery

您好我的AJAX返回JSON对象时出现问题,因为它似乎没有使用成功处理函数,而是直接进入错误处理程序。

我不明白的是,相同的AJAX脚本将成功返回另一个API的JSON对象。

我正在使用的代码就是这个

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
    $(document).ready(function () {
         $.ajax({
            type: "GET",
            dataType: "jsonp",
            url: "http://www.flickr.com/services/feeds/photos_public.gne?tags=soccer&format=json&jsoncallback=?",
            success: function (flikrData) {
                console.log(flikrData);
                    document.writeln("<Table style='width:1000px; height:auto; text-align:center; margin:auto; background-color:lightblue;'>");
                    document.write("<tr>");
                    for (var ini = 0; ini <= flikrData.items.length; ini++) {
                        document.write("<tr>");
                        document.write("<td>");
                        document.writeln("Title: " + flikrData.items[ini].title + "Author: " + flikrData.items[ini].author + "Author ID: " + flikrData.items[ini].author_id + "Date Taken: " + flikrData.items[ini].date_taken + "Description: " + flikrData.items[ini].description + "Link: " + flikrData.items[ini].link + flikrData.items[ini].media.m + "Tags: " + flikrData.items[ini].tags);
                        document.write("</td>");
                        document.write("</tr>");
                    };
                    document.write("<tr>");
                    document.writeln("</Table>");
            },
            error: function (jqHXR, textStatus, errorThrown) {
                console.log(jqHXR, textStatus, errorThrown);
            }
        });
    });
</script>

现在上述工作正常,并将其用作概念证明。

从上面到真实的唯一区别,我在下面包含了一个更改版本以显示格式的差异,是下面的一个似乎是暴露的web服务。这是否意味着我必须以不同方式处理JSON对象?

http://test.net.au/Services/ClientApi.svc/listEventsByCustomer?customerId=" + customerID + "&format=json&jsoncallback=?"

我尝试了类似问题的人建议的上述许多不同变体,例如jsonp: '$callback'?callback=?&callback=?,但似乎没有任何效果。

错误功能在Chrome控制台中产生以下结果。

{"readyState":4,"status":200,"statusText":"success"} 

根据我的理解,这意味着它已经有效...我甚至可以看到在Fiddler中返回的JSON对象,但它不会触发成功处理程序。

我已经测试了Jsonlint中的实际链接,并且已经验证它确实是一个JSON对象。

有没有人有任何想法

  

[OperationContract的]     [System.ServiceModel.Web.WebGet(UriTemplate =“getCustomerById?customerId = {customerId}”,     [RespnseFormat = WebMessageFormat.Json)]     客户GetCustomerById(Guid customerId);

1 个答案:

答案 0 :(得分:1)

这肯定是一个奇怪的错误。我的猜测是,ajax处理程序期望一种不同的响应类型,并且当它收到“错误”时。输入它会引发错误。

所以我猜测问题在于将JSONP与该服务器和回调一起使用。您确定服务器能够响应JSONP请求吗?