【问题标题】:JSON.parse returning syntax error only when deployed on pythonanywhereJSON.parse 仅在部署在 pythonanywhere 上时返回语法错误
【发布时间】:2018-04-27 04:22:27
【问题描述】:

我一般是 javascript 和 Web 开发的新手。所以这是一个用于检索和显示 Twitter 用户的最后 10 条推文的应用程序。它使用 AJAX 从 Django 驱动的服务器中检索推文。该应用程序有效在我的本地机器上很好,但是当我在 pythonanywhere 上部署它时,JavaScript 部分显示语法错误。 以下是 HTML 文件中的脚本部分。

<script>
  $("#HandleForm").on("submit", function (event) {
     event.preventDefault();
     var handle = $('#handle').val();
     get_tweets(handle);
  });

  function get_tweets(handle){
    $.ajax({
        url : "ajax/returntweets/",
        type : "GET",
        data : {handle_data : handle},
        success : function(json){
          var response = $.parseJSON(json)['tweet_data']
          $('#tweet_table').append('<li class="list-group-item list-group-item-success">Tweets of @' + handle + '</li>');

          for(i=0;i<response.length;i++){
            $('#tweet_table').append('<li class="list-group-item">'+response[i]+'</li>');
          }
          $('#tweet_table').append('<li class="list-group-item list-group-item-warning">Tweets End Here!</li>');

        },
    });
  }
</script>

这是返回推文数据的views.py:

auth = OAuth1(APIKey, APISecret, AccessToken, AccessTokenSecret)
username = request.GET.get('handle_data')
verificationUrl = ' https://api.twitter.com/1.1/users/show.json?screen_name=%s' %username
response = requests.get(verificationUrl, auth=auth)
tweets = []

if response.status_code == 200:
    requestUrl = ' https://api.twitter.com/1.1/statuses/user_timeline.json?tweet_mode=extended&screen_name=%s&count=10' %username
    r = requests.get(requestUrl, auth=auth,)
    for tweet in r.json():
        tweets.append(tweet['full_text'])
else:
    tweets.append("Invalid Handle")

response_data = {"tweet_data" : tweets}
return HttpResponse(json.dumps(response_data))

浏览器控制台显示如下错误

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

console.log(json) 打印整个 HTML 文档。

【问题讨论】:

  • 你能在plnkr.co上复制它吗?或者你能附上错误的截图吗?
  • 问题已解决。谢谢!

标签: javascript json ajax django


【解决方案1】:

使用JSON.parse 代替$.parseJSON 如下代码

json_string = "{\"name\": \"google\"}"
json_data = JSON.parse(json_string);

【讨论】:

  • 这似乎已经解决了!谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-01-01
  • 2020-03-07
  • 2018-01-28
  • 2019-10-06
  • 1970-01-01
  • 2018-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多