jsonp,只是不工作..总是错误

时间:2012-03-27 19:50:56

标签: javascript json jquery jsonp

我已阅读,阅读和阅读..我正在尝试提取我已经跟随的最后一个答案我可以谷歌。我不知道问题在这里因为firebug很好找到和解析darn json。

所以试试一个

var url='http://images.wsu.edu/javascripts/tracking/configs/pick.asp';
$.getJSON(url+'?callback=?', function(data){
    alert('true');
    $.jtrack({
        load_analytics:{account:GAcode},
        trackevents:data // this can be hard codded here or set do be feed in like so
        });
});

FAIL但我在WTF?

中看到了它

所以

var url='http://images.wsu.edu/javascripts/tracking/configs/pick.asp';
$.ajax({ 
  url: url, 
  cache: false,  
  dataType: 'jsonp',
  jsonp : "callback",
  success: function(data){ 
    alert('data');
    //data=jQuery.parseJSON(data);
    $.jtrack({
        load_analytics:{account:GAcode},
        trackevents:data // this can be hard codded here or set do be feed in like so
    });
  }, 
  error: function(e, xhr){ 
    alert('error');
    alert(e);
  } 
});

再次失败..所以......嗯,我认为错误会告诉我......没有......所以..让我们真实并测试输出它的自我确定因为它找到了网址并且我正在调用jsop和和..并且让我们确认输出原因肯定是问题。

enter image description here

所以..好吧,我不知道......我已经从曼谷击中了每一个细节。一个人知道这笔交易是什么?

4 个答案:

答案 0 :(得分:1)

结帐此链接: JSON Example using Callback

我认为返回的JSON需要将回调放在返回的JSON中。在上面的示例中,它位于前面,如:

CALLBACKVALUE([{"id":"4","name":"FICTION","parentid":"3","getfullname":"BOOKS > FICTION"},{"id":"5","name":"NON-FICTION","parentid":"3","getfullname":"BOOKS > NON-FICTION"})

答案 1 :(得分:0)

我认为问题在于你没有返回JSONP内容 - 只是JSON。您需要将callback参数添加到当前正在服务的JSON的开头,并将其包装在括号中。例如你现在回来了:

[{
    "element":"#null",
    "options":{}
 }, 
   ...
]

你需要回来:

value_of_callback_param([{
    "element":"#null",
    "options":{}
  }, 
  ...
]);

尾随;是可选的。参见this link,其中描述了它应该如何工作。

此外,我认为application/javascript应该用于内容类型而不是application/json,因为您将返回有效的JavaScript而不仅仅是JSON对象/数组。此外,jQuery docs for the $.ajax function表示error回调不应调用JSONP请求。

答案 2 :(得分:0)

只需让pick.asp获取callback url参数(从现在开始称为<some string>)的值,该参数由jquery生成并像pick.asp?callback=<some string>一样发送到服务器。然后使用该值来构建您的响应:

<some string>(<your json>);

答案 3 :(得分:0)

此警告“#null”

var url = 'http://images.wsu.edu/javascripts/tracking/configs/pick.asp';
$.getJSON(url + '?callback=?', function(data) {
  alert(data[0].element);
});

这是回来的内容:

callback([
    {
        "element":"#null",
        "options":{}
    },{
        "element":"a#hover",
        "options":{
            "category":"hover",
            "label":"function(ele){ return ( ($(ele).attr('title')!='' && typeof($(ele).attr('title')) !=='undefined' ) ? $(ele).attr('title') : $(ele).attr('href') ) }"
        }
    },{
        "element":"a[href$='.jpg'],a[href$='.gif'],a[href$='.png'],a[href$='.ppt'],a[href$='.pdf'],a[href$='.doc'],a[href$='.docx']",
        "options":{
            "category":"download",
            "label":"function(ele){ return ( ($(ele).attr('title')!='' && typeof($(ele).attr('title')) !=='undefined' ) ? $(ele).attr('title') : $(ele).attr('href') ) }"
            }
    },{
        "element":"a:not([href*='mailto('])",
        "options":{
            "category":"email"
            }
    },{
        "element":"a:not([href*='wsu.edu'])",
        "options":{
            "category":"outbound"
            }
    },{
        "element":"a[href*='wsu.edu']",
        "options":{
                "category":"internal",
                "noninteraction":"true"
            }
    }
])