dataType: “json” won't work

前端 未结 7 1425
面向向阳花
面向向阳花 2020-12-10 16:19

I\'m trying to send back multiple variables from a php file to ajax using json in an array. The code in the php file works perfectly and does everything with my database lik

相关标签:
7条回答
  • 2020-12-10 16:52
            $.ajax({
        
           url: '/route/',
           type: 'POST',
           dataType: "json",
           data: 
           {
              type: "add",
              comment: $("#comment").val(),
              id: videoID  
           },
           success: data => {console.log(data);}
        
        });
        
        <?php
        
    ob_start();
        
    ob_end_clean();
        
    echo json_encode(array("id" => "$realid", "un" => "$username", "date" => "$date"));
        ?>
        
            
    
    0 讨论(0)
  • 2020-12-10 16:53

    If you set the dataType in jQuery, that actually sets the Content-Type header attribute. Perhaps, in your PHP script you will need to declare this MIME type as accepted. Did you notice if the code even enters the PHP script when you make the request? I doubt it is a browser problem if it doesn't work in Firefox, Chrome or IE.

    To gain a better perspective at your AJAX request, subscribe to the ajaxBeforeSend (not sure if the event name is right check jQ docs) event and log the xhr object.

    0 讨论(0)
  • 2020-12-10 16:58

    I wouldn't use the dataType if it is causing you issues, also I've personally not used an object as the data value before maybe that has something to do with it?

    Anyway I've tweaked the main ajax routine I hope this helps.

    $.ajax(
    {
       url: 'UpdateComments.php',
       type: 'POST',
       data: 
       {
          type: "add",
          comment: $("#comment").val(),
          id: videoID  
       },
       success: function (response) 
       {
           //Get the data variables from json and display them on page
           var data = $.parseJSON(response);
           alert(data.id);
       }
    });
    
    0 讨论(0)
  • 2020-12-10 17:00

    Try defining the error handler as part of the $.ajax call

    $.ajax({
      ...,
      error: function(xml, error) {
        console.log(error);
      }
    });
    

    Then check your debugging console for any errors that can help you diagnose the problem.

    0 讨论(0)
  • 2020-12-10 17:06

    Common issue is that browser prints "something else" before JSON whether that is some readable or unreadable(invisible) char. Try doing something like this:

    <?php
    //at the very beginning start output buffereing
    ob_start();
    
    // do your logic here
    
    // right before outputting the JSON, clear the buffer.
    ob_end_clean();
    
    // now print
    echo json_encode(array("id" => $realid, "un" => $username, "date" => $date));
    ?>
    

    Now, all supplement data (before JSON) will be discarded and you should have it working...

    0 讨论(0)
  • 2020-12-10 17:07

    It's easy to forget about an echo or a var_dump() that you may have been using in the past to test how your script is working.

    In my own script I had a var_dump(), which I had forgotten about, that wasn't using JSON_encode-ed text and sent plain text to the browser. This broke the dataType:"json" requirement and caused the success function not to work.

    Took me a while to find the problem as I had ctrl+f(ed) for echo only and forgot about the vagabond var_dump().

    printf is probably another suspect.

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