konstans használatával A következő ajax hívásom van, és ha hibás, akkor egy alapértelmezett hibaüzenetet tárolok egy konstansban, amelyet használok ha a válasz nem tartalmaz egyéni üzenetet. Amikor ezt megnézem, folyton arra gondolok, hogy lehetne jobban csinálni. Tudna valaki javaslatot tenni arra, hogyan tudnám jobban csinálni?

function requestService(){ $.ajax({ dataType: "json", type: "POST", url: "/myurl", contentType: CONTENT_TYPE, timeout: AJAX_TIMEOUT, success: function(data, textStatus, jqXHR){ populateData(JSON.parse(jqXHR.responseText)) }, error: function(err){ var errorMessage = AJAX_ERROR; try { errorMessage = JSON.parse(err.responseText).messages.messages[0].description; } catch(error) { //There was an problem finding an error message from the server. The default message will be used. } displayError(errorMessage) }, complete: function(){ console.log("complete"); } }); }; 

Megjegyzések

  • Üdvözöljük a Code Review oldalán! Megváltoztattam a címet, hogy jobban megmondjam, mit csinál a kód, ahelyett, hogy ' szeretné javítani (hogy ' s a a webhely teljes szándéka). Remélem, remek válaszokat kapsz!

Válasz

Nagyjából azt mondanám, hogy the-book már, de használhatja a catch blokkot az alapértelmezés beállításához:

error: function(err){ var errorMessage; try { errorMessage = JSON.parse(err.responseText).messages.messages[0].description; } catch(exception) { errorMessage = AJAX_ERROR; } displayError(errorMessage); } 

Vagy használhatja a teljes try...catch...finally megfogalmazást, ha szeretné:

error: function(err){ var errorMessage; try { errorMessage = JSON.parse(err.responseText).messages.messages[0].description; } catch(exception) { errorMessage = AJAX_ERROR; } finally { displayError(errorMessage); } } 

Vagy megpróbálhatja megszerezni az egyéni hibaüzenetet , és csak az utolsó pillanatban alapértelmezett:

error: function(err){ var errorMessage; try { errorMessage = JSON.parse(err.responseText).messages.messages[0].description; } catch(exception) { // ignored } displayError(errorMessage || AJAX_ERROR); } 

Ennek lehetséges előnye, hogy ha a szerver bármilyen okból üreset (hamis “y” küld) hibaüzenet, a fentiek továbbra is alapértelmezés szerint az általános hibaüzenetet fogják szolgáltatni, annak ellenére, hogy nem adtak kivételt.

Mindenesetre az általános megközelítés számomra rendben van. A szerver megszerzésének nincs igazán tisztább módja. “hibaüzenet, mivel elemeznie kell a JSON-t és mélyre kell ásnia a struktúrát. Bármelyik dolog kivethet, így a try...catch a legegyszerűbb módja ennek kezelése. Legalább a try..catch szükséges amúgy a JSON.parse számára, így mindkét dologra felhasználhatja.

Hozzászólások

  • Köszönöm, ezek néhány hasznos javaslat, és úgy érzem, magabiztosabb vagyok, hogy egy másik szemem is rajta volt!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük