Search code examples
javascriptjqueryjsonajaxxmlhttprequest

jQuery $.ajax() is working when type:html or text but not working when type:json


here is my my code:

<script>
    $.ajax({
        url:url, /* ./ajax/data.json */
        type:'post',
        dataType:'text', /* text,html,json,jsonp */
        /*contentType: 'application/json',*/
        async:true,
        success: function(data){
            console.log(arguments);
            alert('success');
        },
        error: function(){
            alert('failed');
        }
    });
</script>

I get the response and alert('success') when type:'text' & type:'html', but I get alert('failed') when I try type:'jsonp'

Update: Json file

{
  data1:{'Data 1'},
  data2:{'Data 2'},
  data3:{'Data 3'},
  data4:{'Data 4'},
  data5:{'Data 5'},
  data6:{'Data 6'},
  data7:{'Data 7'},
  data8:{'Data 8'},
  data9:{'Data 9'},
}

Solution

  • In your code ajax call type must be 'get'.
    The main problem is in your json file.

    your json file

    {
      data1:{'Data 1'},
      data2:{'Data 2'},
      data3:{'Data 3'},
      data4:{'Data 4'},
      data5:{'Data 5'},
      data6:{'Data 6'},
      data7:{'Data 7'},
      data8:{'Data 8'},
      data9:{'Data 9'},
    }
    

    is not valid Json format

    I have changed to

    {
      "data1":"Data 1",
      "data2":"Data 2",
      ...
      "data9":"Data 9"
    }
    

    and it alerts success.