2010-09-05 6 views
1

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()) }); 
} 

Répondre

3

Parce que vous hébergez du système de fichiers, et faire Une demande à localhost, Chrome et FF verra cela comme une demande de domaine croisé, et donc un problème de sécurité

Si vous tapez l'URL directement dans la barre d'adresse, vous obtiendrez probablement votre réponse.

Safari est un peu plus facile sur ces «problèmes de sécurité» lorsque vous hébergez à partir du système de fichiers.

+0

@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? –

+0

@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

+0

@patrick - changerait la requête et JsonResult pour GET résoudre ce problème et être une meilleure pratique? –

Questions connexes