I would like to store json file to my amazon s3 and then retrieve it with ajax request. Unfortunately it seems s3 does not allow content-type application/json....
I should save my file as text/plain and then add header with php?
I would like to store json file to my amazon s3 and then retrieve it with ajax request. Unfortunately it seems s3 does not allow content-type application/json....
I should save my file as text/plain and then add header with php?
Share Improve this question asked Jun 13, 2013 at 12:00 TropicalistaTropicalista 3,13712 gold badges45 silver badges72 bronze badges 7 | Show 2 more comments3 Answers
Reset to default 7I have found the problem. I was parsing the json in the wrong way.
$.ajax({
url:"https://s3.amazonaws.com/myBucket/myfile.json",
type:"GET",
success:function(data) {
console.log(data.property)
}
})
Instead this works:
$.ajax({
url:"https://s3.amazonaws.com/myBucket/myfile.json",
type:"GET",
success:function(data) {
var obj = jQuery.parseJSON(data);
if(typeof obj =='object'){
console.log(obj.property)
}
}
})
Change Metadata 'Value' in Key:Value pair to 'Application/json' from file properties, in AWS S3 console.
To avoid parsing json use dataType property of ajax, Here we are expecting response as json so
dataType: "json"
will automatically parse the json for you and can be accessed directly without JSON.parse(), in Success function body.
$.ajax({
url:"https://s3.amazonaws.com/myBucket/myfile.json",
type:"GET",
dataType: "json", // This line will automatically parse the response as json
success:function(data) {
var obj = data;
if(typeof obj =='object'){
console.log(obj.property)
}
}
})
dataType - is you telling jQuery what kind of response to expect. Expecting JSON, or XML, or HTML, etc. In our case it was JSON.
JSON.parse
. In the end, a file contains either text or binary data anyway. How to process the data is a decision the client has to make. – Felix Kling Commented Jun 13, 2013 at 12:06