2016-09-06 5 views
0

Я не могу отправить POST/Получить запросы, используя jquery. У меня установлен сервер флагов python. Запросы Curl работают отлично. Я мог видеть запросы, попадающие на сервер, но эти ajax-запросы не попадают на сервер. Ниже приведен код, над которым я работал.JQuery .ajax не отправляет запрос

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width"> 
     <title>JS Bin</title> 
     <script src="https://code.jquery.com/jquery-1.9.1.js"></script> 
     <script> 
     $(document).ready(function() { 

     $("#b1").click(function() { 
      $.ajax({ 
       type: 'post', 
       url: 'http://np.mystiq.xyz/paste', 
       complete: function(response) { 
        $('#output').html(response.responseText); 
       }, 
       error: function() { 
        $('#output').html('Bummer: there was an error!'); 
       }, 
      }); 
     }); 
    }); 

    </script> 
    </head> 
    <body> 
    <button id="b1">test success </button> 
    <div id="output"/> 
    </body> 
</html> 

но эта скрипка, кажется, работает http://jsfiddle.net/zc59uLnc/ Так проблема с JQuery. Не знаете, в чем именно проблема. Буду признателен за любую оказанную помощь.

+0

ли он застрял в Междоменном? Что делать, если вы запрашиваете его из того же домена? Если это кросс-домен, установите 'Access-Control-Allow-Origin' в' * ' См. Больше на http://stackoverflow.com/questions/3506208/jquery-ajax-cross-domain – vee

ответ

0

Изменение ошибка:

error: function(xhr, textStatus, error){ 
    $('#output').html('Bummer: there was an error! Check the console for details.'); 
    console.log(xhr.statusText); 
    console.log(textStatus); 
    console.log(error); 
} 

И он должен направить вас к решению.

+0

this http: // jsfiddle.net/zc59uLnc/, похоже, работает, но мой html, который я разместил, не работает :( – deeshank

+0

Добавить свой код. Что говорит консоль? – GAEfan

+0

Консоль показывает код jquery.Похоже, что он не выдавал ошибку. https://jsbin.com/jezeqavime/edit?html,console,output – deeshank

0

Вы уверены, что ваше мнение принимает метод POST HTTP? вы тестировали с помощью POST или GET, когда вы использовали завиток?

Следующий код работает для меня:

app.py:

from flask import Flask, jsonify, render_template 

app = Flask(__name__) 


@app.route('/', methods=['GET']) 
def index(): 
    return render_template('index.html') 


@app.route('/hello', methods=['POST']) 
def hello(): 
    return jsonify({'test': 'test message'}) 


if __name__ == "__main__": 
    app.run(host="0.0.0.0", debug=True) 

В шаблонах/index.html, я просто вставил свой шаблон и изменил свой адрес на:

url: 'http://my_vm_ip:5000/hello' 

вместо:

url: 'http://np.mystiq.xyz/paste' 

Если у вас есть перекрестный вопрос домена, добавьте следующий код в файл app.py:

@app.after_request 
def after_request(response): 
    response.headers.add('Access-Control-Allow-Origin', '*') 
    response.headers.add('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept') 
    response.headers.add('Access-Control-Allow-Methods', 'GET, PUT, POST, DELETE, OPTIONS') 
    return response 
+0

Да, он принимает POST и curl -X POST 'np.mystiq.xyz/paste' работает нормально, но через ajax он не работает – deeshank

+0

Вы попробовали с ode фрагмент в моем ответе? и какова ошибка, которую вы получаете при загрузке своей страницы? (вы можете проверить свою консоль хром, чтобы увидеть сгенерированные ошибки) – ettanany

+0

нет ошибки .. я попробовал фрагмент .. но не помог .. я не уверен, что u проверил мой отредактированный пост .. http: // jsfiddle.net/zc59uLnc/ работает, но не в моем коде .. – deeshank

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