想把JSONP结果变成JSON

时间:2011-11-29 13:19:58

标签: jquery ajax json jsonp

我在JSONP结果中遇到了一些问题,有人可以告诉我如何将JSONP .responseText结果重新格式化为正确的JSON格式。

var result = ''
$.fn.ajaxUse = function(fullurl){
    result = $.ajax({
      dataType: 'jsonp',
      data: 'id=test',
      jsonp: 'callback_jsonp',
      url: fullurl,
      success: function(data){},
      error: function(xhr){
        alert(xhr.responseText);
      },
      async: false
    }).responseText;
}

$.fn.ajaxUse(ajaxurl+'menu.php');
alert(result);

当我使用上面的代码并尝试返回JSON结果时,我得到了如下结果。有人可以回答我如何以JSON格式解析结果,我已经使用parseJSON而无法正常工作。我想从以下结果中删除jQuery17018127539248006552_1322568664691,并希望仅获得正确的JSON。

jQuery17018127539248006552_1322568664691({"lang":{"1":"Organization Information","2":"Project List","3":"Project Details","4":"Advanced Search","5":"Layers List"}});

1 个答案:

答案 0 :(得分:2)

我认为result设置为ajaxUse函数的返回值,而不是从URL返回的JSON。试试 -

var result = '';
$.fn.ajaxUse = function(fullurl){
    $.ajax({
      dataType: 'jsonp',
      data: 'id=test',
      jsonp: 'callback_jsonp',
      url: fullurl,
      success: function(data){
        result = data;
      },
      error: function(xhr){
        alert(xhr.responseText);
      },
      async: false
    }).responseText;
}

$.fn.ajaxUse(ajaxurl+'menu.php');
alert(result);
alert(result.lang[1]);