2016-11-30 7 views
2

В настоящее время я пытаюсь запросить данные с моего сервера. Я использую флягу, и мой ответ-функция, которая принимает данные из БД и переводит его в список словарей, которые позже будет jsonified, выглядит следующим образом:jsonify список словарей и отправить как ответ от ajax-запроса

@app.route('/database/customer/<int:customer_id>/', methods=['GET']) 
def customer_id(customer_id): 
    c, conn = connectionCust() 
    computerdb = c.execute("SELECT * FROM Computers WHERE customer_id=(%s)", customer_id) 
    computerdb = c.fetchall() 

    computerList = [] 
    for computer in computerdb: 
     computerDict = { 
      'computer_id': str(computer[0]).strip('L'), 
      'computer_name': computer[2]} 
     computerList.append(computerDict) 

    return jsonify(computerList) 

Если я вхожу, например, http://0.0.0.0:8080/database/customer/3 отображает

[ 
    { 
    "computer_id": "5", 
    "computer_name": "CUST3COMP1" 
    }, 
    { 
    "computer_id": "6", 
    "computer_name": "CUST3COMP2" 
    }, 
    { 
    "computer_id": "7", 
    "computer_name": "CUST3COMP3" 
    } 
] 

Мой АЯКС код, который подключен к выпадающего списка, говорит:

$('#customer').chosen().change(function(event){ 
       if(event.target == this){ 
        $.ajax({ 
         type: "GET", 
         dataType: "jsonp", 
         url: "http://0.0.0.0:8080/database/customer/" + $(this).val(), 
         success: function(data){   
         alert(data); 
         } 
        }); 
       }; 
      }); 

Но я не могу оповестить данных, посылаемых назад, когда я смотрю на журнал , это говорит

127.0.0.1 - - [30/Nov/2016 13:02:06] "GET /database/customer/3?callback=jQuery112006497998475787305_1480507320739&_=1480507320740 HTTP/1.1" 301 - 
127.0.0.1 - - [30/Nov/2016 13:02:06] "GET /database/customer/3/?callback=jQuery112006497998475787305_1480507320739&_=1480507320740 HTTP/1.1" 200 - 

Я думаю, что это что-то не так с jsonify() или возможно АЯКС-кода. Вы, ребята, которые более знакомы с этими вещами, возможно, имеют определенный вклад в то, как я могу получить доступ к моему ответу? Спасибо.

+0

Вы пробовали ** DATATYPE: "**" JSON, а также удалить его? Возможно, это не действительный json. Это, скорее всего, проблема jQuery, а не флеш-память. –

+0

Кажется, не имеет никакого значения в моем журнале, если у меня jsonp, json или ничего. Также не можете предупредить данные:/ – Louise

+0

Чтобы убедиться, что попробуйте установить ** async = false ** и ** dataType = текст ** и снова попробуйте изменить ** sucess ** на ** complete **. –

ответ

1

Это не похоже на проблему со стороны Flask. Попробуйте изменить Ajax вызова DATATYPE к JSON вместо JSONP и используя асинхр = ложь:

$('#customer').chosen().change(function(event){ 
      if(event.target == this){ 
       $.ajax({ 
        type: "GET", 
        dataType: "json", 
        async: false, 
        url: "http://0.0.0.0:8080/database/customer/" + $(this).val(), 

        success: function(data){   
        alert(data); 
        }, 
        error: function(data) { 
        alert(JSON.stringify(data)); 
        } 

       }); 
      }; 
     }); 
+1

Проблема решена, ответ в комментариях, просто нужно было изменить на «json» (я думаю, я ничего не изменил!) – Louise

Смежные вопросы