2011-12-11 2 views
0

필요한 모든 이름/값 쌍을 포함하는 ajax 요청 (게시물)을 통해 양식을 제출하는 Greasemonkey 스크립트가 있습니다. 요청에 대한 응답을 얻을 수는 있지만 페이지에 게시 된 데이터에 대한 응답은 포함되어 있지 않습니다. 예를 들어, 서버는 가격, 무게 등과 같은 일부 데이터로 응답해야합니다.하지만 마치 아약스 요청에서 이름 값 쌍을 보지 못한 것입니다.jQuery ajax 게시 문제 asp 페이지에 데이터를 제출하지 않았습니다.

나는 Ajax 호출을 위해 Firebug에서 ajax 게시 매개 변수를보고 있는데 이는 정상적인 페이지 제출의 게시 매개 변수와 완전히 동일하다. 이 사이트는 사용자 이름/pw로 로그인해야하지만 일단 로그인하면 쿠키로 상태를 유지합니다. Ajax 호출이 작동하는 이유는 Ajax 요청에서 서버에 특정 쿠키를 보내지 않기 때문일 수 있습니까? ajax 요청과 함께 전송 된 쿠키를보고 정상적인 페이지 제출과 함께 보내는 쿠키를 요청합니다. 하나만 HttpOnly로 표시됩니다. 차이가 있는지 확실하지 않습니다.

나는 과거에는이 문제를 한번도 경험하지 못했고, 왜 내가이 문제를 해결할 수 없는지 이해할 수 없었습니다.

// ==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){ 
     } 
    }); 

성공 콜백에는 아무 것도 없다는 것을 알았습니다. 방화범 소리가 나는 반응을보고 있습니다.

편집 : 나는이 시도하고 여전히 "정상"응답을 반환하지 않는이 같은

데이터 키에 있어야합니다
// ==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){ 
     } 
    }); 
+0

이 요청을 보낸 도메인과 동일한 요청입니까? – Jasper

+0

예, @include에서 볼 수 있듯이 아약스 호출과 동일한 URL입니다. – user357034

+0

페이지가 서버에 두 개 이상의 게시물을 보낼 수 있습니까? 즉, * state * 검사를 사용합니까? ... 또한, 우리는 정말로 그 질문으로부터 더 많은 것을 말할 수 없습니다. 양식 HTML 및 관련 JS를 게시하십시오. –

답변

0

, 값 쌍 : 코드에서

data: { 'keyname' : 'value' } 

:

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

귀하는 값만 게시하고 있습니다. 당신은 서버 측에서 검색하는 데 사용할 수있는 키를 제공합니다 : 나는 많은 최근 ASP MVC와 협력하고 나는 FormCollection로 데이터를 할 때 가끔 나는 아약스의 입력 필드를 마무리합니다

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

그게 하나의 키 이름 "데이터"와 그 밖의 모든 것을 값으로 보여주는 잘못된 것은 아닙니다. – user357034

+0

그렇습니다. 문제는 데이터를 보내는 방식이 올바른 것입니다. 나는 단지 예를 든다. 더 많은 데이터를 보내려면 더 많은 키 : 값 쌍을 만들어야합니다. 'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} –

+0

글쎄, 나는 당신의 코드를 정확하게 복사했다. 키 이름과 나머지는 값으로 사용합니다.그렇다면 내가 FB에서이 결과를 보는 이유를 친절하게 설명 할 수 있습니까? – user357034

0

나는 그것을 밖으로 표현은 다음과 같습니다 때 생각이

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

과 유사 .BeginForm 태그 :

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

이 형태가 실제로 FormC 게시 할 수 있습니다 ollection은 '보통'POST와 같습니다 ... 구문을 약간 검토해야 할 수도 있습니다. 개발 랩톱에 정확한 코드를 제공하지는 않지만 위와 비슷합니다.

관련 문제