“invalid label” Firebug error with jQuery getJSON

后端 未结 2 556
北荒
北荒 2020-12-04 01:03

I\'m making a jQuery $.getJSON request to another domain, so am making sure that my GET URI ends with \"callback=?\" (i.e. using JSONP).

The NET panel o

相关标签:
2条回答
  • 2020-12-04 01:13

    This is an old post, but I'm posting a response anyway:

    Let's assume you want to get the jSON code generated by the following file, "get_json_code.php":

    <?php
    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
    echo json_encode($arr);
    ?>
    

    Like you mentioned, $.getJSON() uses JSONP when you add a "jsoncallback=?" parameter to the required URL's string. For example:

    $.getJSON("http://mysite.com/get_json_code.php?jsoncallback=?", function(data){ 
       alert(data);
    });
    

    However, in this case, you will get an "invalid label" message in Firebug because the "get_json_code.php" file doesn't provide a valid reference variable to hold the returned jSON string. To solve this, you need add the following code to the "get_json_code.php" file:

    <?php
    $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
    echo $_GET['jsoncallback'].'('.json_encode($arr).')'; //assign resulting code to $_GET['jsoncallback].
    ?> 
    

    This way, the resulting JSON code will be added to the 'jsoncallback' GET variable.

    In conclusion, the "jsoncallback=?" parameter in the $.getJSON() URL does two things: 1) it sets the function to use JSONP instead of JSON and 2) specifies the variable that will hold the JSON code retrieved from the "get_json_code.php" file. You only need to make sure they have the SAME NAME.

    Hope that helps,

    Vq.

    0 讨论(0)
  • 2020-12-04 01:23

    It looks like you're misusing JSONP in your server script.

    When you receive a request with a callback parameter, you should render the following:

    callbackName({ "myName": "myValue"});
    

    Where callbackName is the value of the callback parameter.

    0 讨论(0)
提交回复
热议问题