2012-02-04 25 views
7

estoy tratando de definir algunas rutas con sammy.js aquí es mi código:Sammy.js 404 en ruta raíz

$.sammy("#main_content", function() 
{ 
    this.get("#!/about", function() 
    { 
     // Code 
    }); 

    this.get("#!/", function() 
    { 
     // Code 
    }); 
}).run(); 

Si Goto www.mywebsite.com Siempre sale un error 404. Intenté poner una ruta en blanco como this.get("", function() {}); y parece funcionar para evitar el error 404, pero ninguno de mis enlaces normales en la página funciona. ¿Cómo hago para arreglar esto?

+0

Si usted está recibiendo una Error 404 yendo a la raíz de su sitio, suena mucho más como un problema de configuración del servidor para mí. ¿Sabes en qué está configurado el documento predeterminado del servidor? En Apache, esta sería la directiva DirectoryIndex en su archivo de configuración httpd. Dependiendo del servidor, puede ser index.html o index.htm. Si una de esas páginas no existe, ir a la raíz del sitio provocará este error, ya que el servidor no sabrá qué página desplegar. Si ese no es el problema, entonces es posible que no entienda el problema por completo. –

+0

No me disculpo cuando quise decir un error 404, es un error de javascript devuelto por sammy.js. pero solo lo entiendo si no tengo una configuración de ruta para una ruta en blanco, es decir, this.get ("", función() {}); – Ryan

+0

Ah ... está bien. El error 404 parece un error de página no encontrada, pero quizás no lo es en este caso. Vale la pena usar Fiddler2 o Wireshark para obtener una captura de paquetes de lo que está sucediendo allí. Puede ser que sammy.js esté tratando de sacar algo, pero no sé. Espero que encuentres una respuesta. Parece que no soy yo quien la tiene. –

Respuesta

7

para manejar la petición inicial que no contiene un hash, utilice la ruta vacío que ha mencionado en la parte inferior de su lista de rutas

/* Get Home view for empty hash URLs 
*/ 
this.get("", function() { 
    this.app.runRoute("get", "#Home"); 
}); 

Para que los enlaces normales en su sitio para trabajar , es decir, los enlaces a los archivos binarios que las peticiones AJAX no manejan, configurar sus elementos de anclaje con una ruta de hash y los parámetros de la siguiente manera (código utiliza la sintaxis Razor)

<a href="@Url.Content("#Reporting/Excel/" + 
Model.Report.Type.ToString() + "/" + 
Model.Report.Audience.ToString() + "/" + 
Model.Report.UnitID.ToString() + "/" + 
Model.Report.DepartmentID.ToString())">Download Excel version</a> 

Ahora crear una ruta para Sammy para enviar a la URL real

/* Reporting Excel requests 
*/ 
this.get("#Reporting/Excel/:type/:audience/:unitID/:departmentID", function() { 
    location.assign("Report/Excel?" + 
     "Type=" + this.params.type + "&" + 
     "Audience=" + this.params.audience + "&" + 
     "UnitID=" + this.params.unitID + "&" + 
     "DepartmentID=" + this.params.departmentID 
    ); 
}); 
Cuestiones relacionadas