/ / problemas con jQuery ajax post no enviar datos a la página asp - jquery, ajax, cookies, greasemonkey

problemas con la publicación de jQuery ajax que no envía datos a la página asp - jquery, ajax, cookies, greasemonkey

Tengo un script de Greasemonkey que envía un formularioa través de una solicitud ajax (publicación) con todos los pares de nombre / valor requeridos. Recibo una respuesta a la solicitud, pero no contiene ninguna respuesta a los datos publicados en la página. Por ejemplo, el servidor debe responder con algunos datos como el precio, el peso, etc., pero es como si no viera los pares de valores de nombre en la solicitud de ajax.

Estoy mirando los parámetros de publicación de ajax enFirebug para la llamada Ajax y son exactamente los mismos parámetros de publicación en un envío de página normal. Este sitio requiere que inicie sesión con un nombre de usuario / pw, pero una vez que inicie sesión, supongo que se mantiene en estado con cookies. ¿La razón por la que la llamada Ajax funciona es porque no envía una cookie en particular al servidor en la solicitud Ajax? En cuanto a las cookies enviadas con la solicitud de ajax es la misma que las enviadas con un envío de página normal. Sólo uno está listado como HttpOnly. No estoy seguro si eso hace una diferencia.

Nunca tuve este problema en el pasado y no puedo entender por qué no puedo hacer que esto funcione.

// ==UserScript==
// @name          test
// @description   test
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// @include       *http://extranet.alliancels.net/ordering/ebusiness/Pricing.aspx*
// ==/UserScript==

jQuery.ajax({
url: "http://extranet.alliancels.net/ordering/ebusiness/Pricing.aspx",
data: "__EVENTTARGET=&__EVENTARGUMENT=&__SCROLLPOSITIONX=0&__SCROLLPOSITIONY=0&__VIEWSTATE="+encodeURIComponent(jQuery("#__VIEWSTATE").val())+"&ctl00$ContentPlaceHolder1$txtQuantity=1&ctl00_ContentPlaceHolder1_txtPartNumber=70367301P&ctl00_ContentPlaceHolder1_btnSubmit=Submit",
type: "POST",
async: false,
cache: false,
success: function(data){
}
});

Me doy cuenta de que no hay nada en la devolución de llamada de éxito, solo estoy mirando la respuesta en firebug.

Edit: intenté esto y todavía no devuelve la respuesta "normal"

// ==UserScript==
// @name          test
// @description   test
// @require       http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js
// @include       *http://extranet.alliancels.net/ordering/ebusiness/Pricing.aspx*
// ==/UserScript==


jQuery("#ctl00_ContentPlaceHolder1_txtPartNumber").val("70367301P");
var form_data = $("#aspnetForm").serialize();

jQuery.ajax({
url: "http://extranet.alliancels.net/ordering/ebusiness/Pricing.aspx",
data: form_data,
type: "POST",
async: false,
cache: false,
processData: false,
success: function(data){
}
});

Respuestas

0 para la respuesta № 1

Sus datos deben estar en pares clave, de valor como este:

data: { "keyname" : "value" }

en su código:

  jQuery.ajax({
url: "http://extranet.alliancels.net/ordering/ebusiness/Pricing.aspx",
data: { "data" : "__EVENTTARGET=&__EVENTARGUMENT=&__SCROLLPOSITIONX=0&__SCROLLPOSITIONY=0&__VIEWSTATE="+encodeURIComponent(jQuery("#__VIEWSTATE").val())+"&ctl00$ContentPlaceHolder1$txtQuantity=1&ctl00_ContentPlaceHolder1_txtPartNumber=70367301P&ctl00_ContentPlaceHolder1_btnSubmit=Submit"}
type: "POST",
async: false,
cache: false,
success: function(data){
}
});

Usted está publicando sólo el valor. proporcione una clave que pueda usar para recuperar en el servidor:

string posteddata= Request.Form["keyname"];

0 para la respuesta № 2

He estado trabajando mucho con ASP MVC recientemente y, a veces, cuando quiero los datos como FormCollection, cerraré los campos de entrada en la etiqueta Ajax.BeginForm que se parece a esto

@using (Ajax.BeginForm("ActionName", "Controller", null, new AjaxOptions
{ }, new { id ="AjaxForm" }))

Creo que cuando se presenta se ve así:

<form action="ActionName"  data-ajax="true" data-ajax-url="/Controller/ActionName" id="AjaxForm"> </form>

Esto permitirá que el formulario realmente publique elRecolección de formularios como un POST "normal" ... Es posible que tenga que revisar un poco la sintaxis. No estoy en mi computadora portátil de desarrollo para darle el código exacto, pero es más o menos como el anterior.