Viking93
Viking93

Reputation: 269

getJSON in Javascript

I am new to html and javascript.As far as i know the following code should give an alert when i press "Get JSON Data" button.But the page is not giving me any response.Any help is greatly appreciated.

<html>
<head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
    <script>
        $(document).ready(function(){
            $("button").click(function(){
                $.getJSON("http://127.0.0.1:5000/2", function(result){
                    if (result.length == 0){
                        alert("nothing") ;
                    }
                    if (result.length){
                        alert("success") ;
                    }    
                    // $("div").append(myObject);
                });
            });
        });
    </script>
</head>
<body>
    <button>Get JSON data</button>
    <div></div>
</body>
</html>

Upvotes: 0

Views: 2472

Answers (2)

Nomesh DeSilva
Nomesh DeSilva

Reputation: 1649

I suspected that should be the Cross-domain issue. That is why I asked for the console log. you have couple of choices:

  • config the cross-domain headers from your servlet/backend response. (ex: if you're using a Servlet:)

    response.setHeader('Access-Control-Allow-Origin','*');

  • use jsonp call back

    $.getJSON("http://example.com/something.json?callback=?", function(result){ //response data are now in the result variable alert(result); });

The "?" on the end of the URL tells jQuery that it is a JSONP request instead of JSON. jQuery registers and calls the callback function automatically.

  • use $.ajax with CORS enabled or with jsonp

 ex:
   $.ajax({
     url: surl,
     data: { 
       id: id  // data to be sent to server
     },
     dataType: "jsonp",
     jsonp: "callback",
     jsonpCallback: "jsonpcallback"
   });

 // Named callback function from the ajax call when event fired.
 function jsonpcallback(rtndata) {
   // Get the id from the returned JSON string and use it to reference the target jQuery object.
   var myid = "#" + rtndata.id;
   $(myid).feedback(rtndata.message, {
     duration: 4000,
     above: true
   });
 }

  • or else, download and configure "CORS.jar" in your server side which will allow the cross-domain requests. HOW ?

Hope you can get some idea. follow which suits for you ..

Upvotes: 1

H&#229;kon Egset Harnes
H&#229;kon Egset Harnes

Reputation: 15107

Replace the JSON call with

$.getJSON("http://127.0.0.1:5000/2", function(result){
        if (result.length == 0){
            alert("nothing") ;
        }
        if (result.length){
            alert("success") ;
        }    
        // $("div").append(myObject);
    }).fail(function( jqxhr, textStatus, error ) {
       var err = textStatus + ", " + error;
       console.log( "Request Failed: " + err )
    });

That way you can see what goes wrong. The javascript looks OK, I suspect it's a server issue.

You could also try getting back JSON from some random source, like http://1882.no/API/business/get/results.php?q=skole&page=0

Upvotes: 0

Related Questions