2012-02-16 23 views
7

Jestem nowy, aby wykonać żądanie Ajax i złożyłem następujące Pastie. Linia 107 to moja $ .PUT i wyświetla błąd w firebugie, że $ .PUT nie jest funkcją. Jeśli chodzi o prośbę o ajax, wiem, że to jest złe, ale jestem dość zagubiony co do tego, co muszę zrobić w funkcji success addCell. Czy podążam właściwą drogą w tej sprawie?Żądanie Ajax PUT

Edited

function _ajax_request(url, data, callback, type, method) { 
    return jQuery.ajax({ 
     type: 'PUT', 
     url: "slot_days/show", 
     data: data, 
     success: function(data) 
     { 
callback($.put('/slot_days/show', { '/slot_days/': 'slot_times' }, function(result) 

      { 

      }); 
     ) 
     } 
    }); 
} 

jQuery.extend({ 
    put: function(url, data, callback, type) { 
     return _ajax_request(url, data, callback, type, 'PUT'); 
}}); 
+0

Co jest wymagane to PUT lub POST? –

Odpowiedz

15

masz błąd tutaj (funkcja success musi być anonimowa):

return 
    jQuery.ajax({ 
     type: 'PUT', 
     url: 'slot_days/show', 
     data: data, 
     success: function addCell() { 

     } 
    }); 

Powinno być:

function _ajax_request(url, data, callback, method) { 
    return jQuery.ajax({ 
     url: url, 
     type: method, 
     data: data, 
     success: callback 
    }); 
} 

oraz rozszerzenie jQuery:

jQuery.extend({ 
    put: function(url, data, callback) { 
     return _ajax_request(url, data, callback, 'PUT'); 
}}); 

i przykład użycia próbki:

$.put('/url', { 'foo': 'bar' }, function(result) { 
    // do something with the results of the AJAX call 
}); 
+0

@Djj, nie, chodzi mi o to, że masz nieprawidłowy javascript. Problem nie polega na tym, że jest pusty. Zobaczymy to później. Problem polega na tym, że w twoim kodzie napisałeś: 'success: function addCell() {}', który jest nieprawidłowy. Musi to być 'success: function() {}'. A jeśli chcesz wywołać jakąś funkcję, która została przekazana jako parametr, możesz na przykład: 'success: callback'. –

+0

@Djj, oczywiście, że możesz. Po prostu przekaż go jako trzeci argument metody '$ .put':' $ .put ("/" + getDiaryId() + "/ slot_days /" + getSlotId + "/ slot_times /" + 0, slot_time, addCell); ' –

+0

W ten sposób: 'success: addCell ($. Put ("/"+ getDiaryId() +"/slot_days/"+ getSlotId +"/slot_times/"+ 0, slot_time, addCell)) ' – David

0

Wydaje się, że nie jesteś tym _ajax_request_PUT.js w głównym pliku. Dlatego nie można znaleźć funkcji $.put. Najpierw włącz go, a następnie błąd zniknie.

+0

Dobrze, może to zabrzmieć głupio, ale jak bym to zrobił? – David

+0

Tak samo, jak dołączasz jquery.' " ' –

+0

Zawarłem plik do mojego głównego pliku, wciąż otrzymuję ten sam błąd, prawdopodobnie jest to związane z moją funkcją powodzenia i oddzwanianiem – David

0

Zobacz prostą i czystą odpowiedź tutaj: https://stackoverflow.com/a/11549679/916632 Wystarczy zmienić wartość typu na "PUT".

Zajmuje się również odpowiedzią 415, która może powodować problemy dla innych (zablokowało mnie). Również odpowiedź 400 pod względem przesłanego obiektu danych.

Powiązane problemy