La demande JQuery suivante fonctionne très bien dans IE mais pas dans FF et Chrome.
Je cours la page suivante à partir de son emplacement de fichier par ex. file: /// C: /Test/json.htm et demande une page qui s'exécute sur localhost.
Pour quelle raison?
Et comment puis-je le faire fonctionner pour FF et Chrome?
<body>
<input type="button" value="Search" id="search-button" />
<script language="javascript" type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$ (function() {
$('#search-button').click(function() {
var parms = {
id: 27
};
$.ajax({
type: 'POST',
url: 'http://localhost:51621/Test/GetJSONMessage/',
async: false,
data: parms,
dataType: 'json',
success: function(data, testStatus) {
alert(data.message);
}
});
});
});
</script>
</body>
Où GetJSONMessage est fourni par un ASP.Net MVC JsonResult:
[HttpPost]
public JsonResult GetJSONMessage(int id)
{
return Json(new { message = ("hello world " + id.ToString()) });
}
@patrick - ok, c'est un problème de domaine croisé - alors comment faire face à cela? Comment les autres sites qui fournissent/consomment des données json provenant d'autres domaines fonctionnent-ils autour de cela? –
@Nicholas - Si dans votre site actuel, la demande sera faite au même domaine, il s'agit d'un non-problème. Sinon, vous pouvez essayer de définir le type de données à 'jsonp', ce qui est un moyen de permettre des requêtes json interdomaines. Cependant, je ne suis pas tout à fait sûr de ce que les tweaks doivent faire pour fonctionner avec 'jsonp'. – user113716
@patrick - changerait la requête et JsonResult pour GET résoudre ce problème et être une meilleure pratique? –