2017-09-18 2 views
0

J'essaie d'utiliser iron-ajax mais content-type = 'application/json' ne supporte pas.iron-ajax ne supporte pas content-type = 'application/json' pour la requête POST

<iron-ajax id="ajaxRequestOtp" 
           method="POST" 
           url="[[apiEndPoint]]/user-sms-auth" 
           body="{{requestOtpBody}}" 
           handle-as="json" 
           headers='{"Accept": "application/json"}' 
           on-response="_responseRequestOtp" 
           on-error="_errorResponseRequestOtp" 
           content-type='application/json'> 
        </iron-ajax> 

Immobilier -

static get properties() { 
      return { 
       apiEndPoint: { 
        type: String, 
        value: 'http://example.com' 
       }, 
       requestOtpBody: { 
        type: String, 
        computed: '_createRequestOtpBody(mobileNumber)', 
        notify: true 
       } 
      }; 
     } 

fonction calculée -

_createRequestOtpBody(mobileNumber) { 
      let body = { 
       phone_number: "+91" + mobileNumber 
      } 
      return JSON.stringify(body); 
     } 

Ce ne fonctionne pas, 404 demande Bad. Je dois envoyer un objet JSON à mon serveur.

Erreur Message-

OPTIONS http://example.com/user-sms-auth 404 (Not Found) 
(index):1 Failed to load http://example.com/user-sms-auth: Response for preflight has invalid HTTP status code 404 
+0

'fer-ajax' soutient que' contenu type' pour 'POST', et envoie en effet des données JSON avec le jeu d'en-tête: [demo] (https://codepen.io/tony19/pen/rGxMMP ? éditeurs = 1010). Avez-vous des détails sur le 400? Y at-il un message d'erreur qui indique le problème avec la demande? (par exemple, est-ce un en-tête manquant? corps mal formé? etc.) – tony19

+0

@ tony19 - Je remplace juste mon ** url ** avec l'url u fourni dans le _codepen_ '// httpbin.org/post' et et gardé tous les autres les choses pareil, et ça a commencé à fonctionner. Alors, est-ce que vous pensez que le problème est dans mon serveur backend? – rahul

+0

Il semble que vous ayez changé le code d'erreur reçu de "400 Bad Request" à "404 Bad Request", ce qui n'est pas correct car ** 404 ** est le code d'état de "Not Found". Si vous obtenez un ** 400 **, cela signifie que quelque chose ne va pas avec votre demande. Un ** 404 ** indique que vous demandez une ressource qui n'existe pas (c'est-à-dire une mauvaise URL). – tony19

Répondre

0

Faire requestOtpBody =>type: Object et sauter l'étape JSON.stringify.

_createRequestOtpBody(mobileNumber) { 
    return { phone_number: "+91" + mobileNumber }; 
} 
+0

J'ai essayé cela aussi, mais ça ne fonctionne pas – rahul

+0

@rahul as-tu essayé d'ajouter 'with-credentials' à l'élément' iron-ajax'? – codeMonkey