2011-12-11 10 views
0

私は必要なすべての名前と値のペアを含むajaxリクエスト(投稿)を介してフォームを送信するGreasemonkeyスクリプトを持っています。リクエストに対する応答がありますが、ページに投稿されたデータへの応答は含まれていません。たとえば、サーバーは価格、重量などのデータで応答する必要がありますが、ajaxリクエストで名前の値のペアが表示されていないかのようです。jQueryの問題ajaxのポストがaspページにデータを送信しない

私はFirebugのAjaxポストパラメータをAjax呼び出しで調べています。通常のページ送信時のポストパラメータとまったく同じです。このサイトでは、ユーザー名/ pwでログインする必要がありますが、ログインするとクッキーの状態が保持されているようです。 Ajax呼び出しが動作する理由は、Ajax要求で特定のCookieをサーバーに送信しないためですか? ajaxリクエストで送信されたクッキーを見ると、通常のページ送信で送信されたクッキーと同じです。 1つだけが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で見ることができるように、彼はajax呼び出しと同じ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){ 
     } 
    }); 

あなただけの値を投稿しています。あなたは、サーバー側で取得するためにそれを使用することができ、キーを提供します。

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

これは正しいものではなく、ただ1つのキー名 "data"とそれ以外のものすべてを値として示しています。 – user357034

+0

はい、問題は、データを送信する方法が正しいことです。私は例を挙げていただけです。より多くのデータを送信する場合は、より多くのキー:値のペアを作成する必要があります。 'key1': 'value1'、 'key2': 'value2'、 'key3': 'value3'} –

+0

あなたのコードを正確にコピーしました。キー名と残りの値を指定します。それではFBでこの結果を見ている理由を親切に説明できますか? – user357034

0

私は最近、ASP MVCで多くの仕事をしていると時々私はFormCollectionとしてデータを欲しいときに私はアヤックスの入力フィールドをラップします

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

これは、フォームが実際にFormCを投稿することができます:それは次のようになりますアウトレンダリングされるときに、私は信じている。この

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

に似ています.BeginFormタグあなたは正確なコードを提供するために私の開発ラップトップではないが、少し多かれ少なかれ上記のような構文を見直さなければならないかもしれません。

関連する問題