javascript - encriptar - jquery ajax post
URL Codifique una cadena en jQuery para una solicitud AJAX (5)
Estoy usando MVC3 / EntityFramework como back-end, el front-end consume todos mis controladores de proyecto a través de jquery, la publicación directa (usando $ .post) no requiere la inscripción de datos, cuando pasa parámetros directamente distintos de la URL codificada. Ya probé varios caracteres, incluso envié una URL (esta http://www.ihackforfun.eu/index.php?title=update-on-url-crazy&more=1&c=1&tb=1&pb=1 ) como parámetro y tenía no hay problema en absoluto, aunque encodeURIComponent funciona muy bien cuando pasa todos los datos dentro de la URL (codificado)
URL codificada es decir>
var encodedName = encodeURIComponent(name);
var url = "ControllerName/ActionName/" + encodedName + "/" + keyword + "/" + description + "/" + linkUrl + "/" + includeMetrics + "/" + typeTask + "/" + project + "/" + userCreated + "/" + userModified + "/" + status + "/" + parent;; // + name + "/" + keyword + "/" + description + "/" + linkUrl + "/" + includeMetrics + "/" + typeTask + "/" + project + "/" + userCreated + "/" + userModified + "/" + status + "/" + parent;
De lo contrario, no utilice encodeURIComponent e intente pasar parámetros dentro del método post ajax
var url = "ControllerName/ActionName/";
$.post(url,
{ name: nameVal, fkKeyword: keyword, description: descriptionVal, linkUrl: linkUrlVal, includeMetrics: includeMetricsVal, FKTypeTask: typeTask, FKProject: project, FKUserCreated: userCreated, FKUserModified: userModified, FKStatus: status, FKParent: parent },
function (data) {.......});
Estoy implementando la búsqueda instantánea de Google en mi aplicación. Me gustaría disparar solicitudes HTTP a medida que el usuario escribe en la entrada de texto. El único problema que tengo es que cuando el usuario llega a un espacio entre el nombre y el apellido, el espacio no se codifica como un +
, lo que rompe la búsqueda. ¿Cómo puedo reemplazar el espacio con un +
, o simplemente URL segura Codificar la cadena?
$("#search").keypress(function(){
var query = "{% url accounts.views.instasearch %}?q=" + $(''#tags'').val();
var options = {};
$("#results").html(ajax_load).load(query);
});
Intente encodeURIComponent .
Codifica un componente de identificador uniforme de recursos (URI) al reemplazar cada instancia de ciertos caracteres por una, dos, tres o cuatro secuencias de escape que representan la codificación UTF-8 del carácter (solo habrá cuatro secuencias de escape para los caracteres compuestos por dos "sustitutos" " caracteres).
Ejemplo:
var encoded = encodeURIComponent(str);
Mejor manera:
encodeURIComponent escapa a todos los caracteres excepto lo siguiente: alphabetic, decimal digits, - _ . ! ~ * '' ( )
alphabetic, decimal digits, - _ . ! ~ * '' ( )
Para evitar solicitudes inesperadas al servidor, debe llamar a encodeURIComponent en cualquier parámetro ingresado por el usuario que se pasará como parte de un URI. Por ejemplo, un usuario podría escribir "Tomillo y tiempo = de nuevo" para un comentario variable. No usar encodeURIComponent en esta variable dará un comentario = Thyme% 20 & time = again. Tenga en cuenta que el signo y el signo igual marcan un nuevo par de clave y valor. Entonces, en lugar de tener una clave de comentario POST igual a "Thyme & time = again", tienes dos claves POST, una igual a "Thyme" y otra (time) igual a otra vez.
Para application / x-www-form-urlencoded (POST), según http://www.w3.org/TR/html401/interac...m-content-type , los espacios deben reemplazarse por ''+'', por lo que es posible que desee seguir un reemplazo de encodeURIComponent con un reemplazo adicional de "% 20" con "+".
Si uno desea ser más estricto al adherirse a RFC 3986 (¡que se reserva!, '', (,) Y *), aunque estos caracteres no tienen usos de delimitación de URI formalizados, se puede usar de forma segura lo siguiente:
function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!''()]/g, escape).replace(//*/g, "%2A");
}
prueba este
var query = "{% url accounts.views.instasearch %}?q=" + $(''#tags'').val().replace(/ /g, ''+'');
encodeURIComponent funciona bien para mí. Podemos dar la url como esta en la llamada ajax. El código que se muestra a continuación:
$.ajax({
cache: false,
type: "POST",
url: "http://atandra.mivamerchantdev.com//mm5/json.mvc?Store_Code=ATA&Function=Module&Module_Code=thub_connector&Module_Function=THUB_Request",
data: "strChannelName=" + $(''#txtupdstorename'').val() + "&ServiceUrl=" + encodeURIComponent($(''#txtupdserviceurl'').val()),
dataType: "HTML",
success: function (data) {
},
error: function (xhr, ajaxOptions, thrownError) {
}
});