2016-03-16 5 views
0

Я следующий код, который всегда генерирует сообщение об ошибке 404 (не найдено):проводок JSON с выпуском АЯКС

data = Object {a: "500000", b: "4"} 
postJson(data); 


function postJson(data){ 
    $.ajax({ 
       url: '/url/postJson', 
       type: 'POST', 
       data: data, //also tried "JSON.stringify(data)" 
       dataType: "json", 
       contentType: "application/json", 
       success: function (data, textStatus, jqXHR) { 

       }, 
       error: function (jqXHR, textStatus, errorThrown) { 
        alert('error') 
       } 
      }); 
} 

На стороне сервера:

@cherrypy.expose 
def postJson(self, data): 
    print data //just for the test 

Что может быть проблема?

+0

ли URL правильно? Идти на имя функции, не должно ли это быть '/ url/postJson'? –

+0

@BrianRay Я исправил его. Это была опечатка. Это не настоящие имена. В любом случае, настоящий URL-адрес правильный. Это было первое, что я проверил. – Omri

+0

Ну, это как-то связано с URL-адресом. Это единственный способ получить 404. Однако, не зная структуры каталогов, я не могу сделать больше, чтобы помочь. –

ответ

0

Going кодом в this answer, похоже, необходимо обновить ваш JSON форматирования. Попробуй это.

data = {data: {a: "500000", b: "4"}} 
+0

Я пытался использовать его, и ничего не изменилось. – Omri

0

404 Состояние со стороны сервера. Для проверки существует и получить доступ к URL пытается завить:

curl -X POST -H "Content-Type: application/json" --data '{a: "500000", b: "4"}' http://url/portJson 

Мои часто используется 100% рабочей функцию для POST Джанго бэкэнда (Im не установлена ​​«CONTENTTYPE» и «DATATYPE», но я поставил «X-CSRFToken»):

function sendAjaxRequest(url, data, done, always, fail, reqType, timeout) { 
    var _done = function() {}; 
    var _always = function() {}; 
    var _fail = function(jqXHR,status,err){ 
     alert('Error (' + status + '): ' + err + '\n' + jqXHR.responseText); 
    } 
    var _reqType ='POST' 
    var _timeout = 60000; 

    if (typeof done !== 'undefined') _done = done; 
    if (typeof always !== 'undefined') _always = always; 
    if (typeof fail !== 'undefined') _fail = fail; 
    if (typeof reqType !== 'undefined') _reqType = reqType; 
    if (typeof timeout !== 'undefined') _timeout = timeout; 

    var csrftoken = $.cookie('csrftoken'); 

    $.ajax({ 
     url: url, 
     headers:{ 'X-CSRFToken': csrftoken }, 
     data: data, 
     cache: false, 
     type: _reqType, 
     timeout: _timeout 
    }).done(_done).always(_always).fail(_fail); 
}; 

с помощью:

var data = {'a': "5000", 'b': "4"}; 

sendAjaxRequest(
    "/my/url/", 
    data, 
    function(response, textStatus, jqXHR) {// done 
     // do work 
    }, undefined, undefined, 'POST' 
); 
0

Об изменении сервера:

@cherrypy.expose 
def postJson(self, data): 
    print data //just for the test 

к:

@cherrypy.expose 
@cherrypy.tools.json_in 
def postJson(self): 
    data = cherrypy.request.json 
    print data //just for the test