Ajax请求url并在div中显示响应不起作用?

时间:2016-09-07 19:46:25

标签: javascript jquery ajax

我正在尝试向网站发出ajax请求并仅显示部分内容。我的代码不起作用,我看不出原因。另外,我如何解析对象并仅显示其中的一部分(只有一个属性)?非常感谢!

JS:

  $(document).ready(function(){
   $('#buttonClick').on('click', 'button',function(){
    $.ajax('http://ShakeItSpeare.com/api/sentence', {
     success: function(response){
      console.log(response)
   //console.log of response works 
        $('.screen').html(response).fadeIn();
      }
    })
  });
});

HTML

<body>
    <div id="buttonClick">
<button>click Me</button>
<ul class="screen"></ul>
    </div>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>

<script type="text/javascript" src="shakes.js"></script>
</body>

5 个答案:

答案 0 :(得分:4)

添加您尝试插入HTML的JSON属性名称只应插入该值。例如,在下面的代码中,我在“response.sentence”中添加了“sentence”属性。

$(document).ready(function(){
  $('#buttonClick').on('click', 'button',function(){
    $.ajax('http://ShakeItSpeare.com/api/sentence', {
     success: function(response){
        console.log(response)
        //changed original code from ".html(response)" to ".html(response.sentence)"
        $('.screen').html(response.sentence).fadeIn();
      }
    })
  });
});

工作代码笔:Working Codepen

答案 1 :(得分:1)

我会使用这种结构:

 $(document).ready(function() {
            $('#buttonClick').on('click', 'button', function() {
                $.ajax({
                    type: "GET",
                    url: "http://ShakeItSpeare.com/api/sentence",
                    success: function(response) {

                        console.log(response);
                        console.log(response.sentence);
                        console.log(response.markov);
                        //console.log of response works

                        $('.screen').html(JSON.stringify(response)).fadeIn();
                        //$('.screen').html(response.sentence).fadeIn();

                    },
                    error: function(xhr, status, error) {
                        var err = eval("(" + xhr.responseText + ")");
                        console.log(err.Message);
                    }
                });
            });
        });

基于您的评论的替代方法:

   $(document).ready(function() {
        $('#buttonClick').click(function() {
            $.ajax({
                type: "GET",
                url: "http://ShakeItSpeare.com/api/sentence",
                dataType:'text',  // specify dataType as text and you wont need to convert the JSON 
                success: function(response) {
                    //console.log of response works
                    $('.screen').html(response).fadeIn();

                },
                error: function(xhr, status, error) {
                    var err = eval("(" + xhr.responseText + ")");
                    alert(err.Message);
                }
            });
        });
    });

答案 2 :(得分:0)

嗯..你应该从Object获取String。 这将是

 $(document).ready(function(){
   $('#buttonClick').on('click', 'button',function(){
    $.ajax('http://ShakeItSpeare.com/api/sentence', {
     success: function(response){
      console.log(response)
   //console.log of response works 
        $('.screen').html(response["sentence"]); // Changed this one from "response" to "response["sentence"]
      }
    })
  });
});


Object {sentence: "Nor goodly ilion stand.", markov: 2}

或将其字符串化。

答案 3 :(得分:0)

您似乎缺少请求中的网址密钥

$(document).ready(function(){
   $('#buttonClick').on('click', 'button',function(){

    $.ajax({url:'http://ShakeItSpeare.com/api/sentence', //Add url: and move the {

     success: function(response){
      console.log(response)
        $('.screen').html(response).fadeIn();
      }
    })
  });
});

如果返回的响应具有内容类型的application / json,那么您将不需要执行JSON.parse()如果它是json格式但是是字符串,那么您可以使用JSON.parse()然后它将数据用作对象。

如果你做console.log(响应)它应该显示整个对象。

答案 4 :(得分:-1)

在console.log(响应)之后放一个分号