带有JSON的jQuery ajax函数

Hi i am using this code to get contents from a json file but i am not able to show results

my code is

$(document).ready(function(){

$.ajax({
    url: 'http://50.116.19.49/rest/user.json',
    dataType: 'jsonp',
    jsonp: 'jsoncallback',
    timeout: 50000,
    success: function(data, status){
    alert(data);    
    },
    error: function(){
        output.text('There was an error loading the data.');
    }
});
});

In google chrome i can see that the request status is 200 and data is loaded. here is the link from which i am copying code The Link.... Any help!!!!

Thanks

Your code doesn't work because the http://50.116.19.49/rest/user.json resource return a JSON response instead of JSONP (difference).

So you can't make cross-domain calls via ajax BUT you can create a some proxy script ON YOUR SERVER which will make it for you. Example:

cross-domain-call.php

<?php echo file_get_contents('http://50.116.19.49/rest/user.json');?>

And change your script to

$(document).ready(function(){

$.ajax({
    url: 'http://127.0.0.1/cross-domain-call.php',
    dataType: 'json',
    timeout: 50000,
    success: function(data, status){
        console.log(data);    
    },
    error: function(jqXHR, textStatus, errorThrown){
        console.log(jqXHR);    
        console.log(textStatus);    
        console.log(errorThrown);    
    }
});
});

Since you don't seem to have access to remote webservice to convert it to JSONP, here is a solution using Yahoo's YQL as a proxy. YQL will retrieve file contents from any remote site and return as xml or jsonp.

Working DEmo http://jsfiddle.net/Uh8cz/2/

You will notice the response object has additional properties created by YQL

var yqlBaseUrl = 'http://query.yahooapis.com/v1/public/yql?q=';


var restUrl = 'http://50.116.19.49/rest/user.json';
var yqlQuery = 'select * from json where url="' + restUrl + '" ';
var yqlFormat = 'format=json'
var jQueryCallback = '?'
var fullQueryUrl = yqlBaseUrl + yqlQuery + '&' + yqlFormat + '&' + jQueryCallback;

$.getJSON(fullQueryUrl, function(json) {
    var jsonString = JSON.stringify(json.query.results.json.json, null, ' ')
    $('body').append('<h1>Response</h1><pre>' + jsonString)
})  ​

If you can control the content of "user.json", wrap it around a function:

user.json content:

execute_jsonp({you_json)

your javascript:

$(document).ready(function(){

    $.ajax({
        url: 'http://50.116.19.49/rest/user.json',
        dataType: 'jsonp',
        jsonp: 'jsoncallback',
        timeout: 50000,
        success: function(data, status){
            data(); //execute the function that is sent
        },
        error: function(){
            output.text('There was an error loading the data.');
        }
    });

    function execute_jsonp(json){ //recreate the function so you may access the json as a parameter
        alert(json);
    }
});

Hope this helps ;)