Closed sumioka closed 8 years ago
ありがとうございます。自分のほうでも調べてみました。
$('form').submit()
を実行すると、送信パラメータにはsubmit関係の要素は全く含まれない(Firefox/Chromeで確認)。name
とvalue
が送信パラメータに付加されるname.x
、name.y
という形式で送信パラメータに付加される現在のcheerio-httpcliでは上記のような挙動ではなく、一律でsubmitだろうがimageだろうがパラメータをセットしてしまっているので、sumiokaさんのPRも含めたフォーム送信周りの挙動を修正中です。
ただ、間違っていたとはいえ、今までその挙動だからこそ上手く動いていたというケースもあると思うので、今回の変更はある意味前バージョンとの互換性が失われることになります。したがって、マイナーバージョンを1つ上げて0.4.0
としてリリースするためにちょっと色々追加する予定です(現在0.4.0-wip
ブランチで作業中)。
0.4.0
リリースまでもうしばらくお待ちくださいませ。
ちなみに当座を凌ぐ方法としては、
$('input[name=edit]').remove();
$('form').submit( ...
とかやって編集ボタンを無理やり消して送信すれば、今回のような複数submitボタンのフォームでもとりあえずは上手く動きそうな気がします(ダメだったらスミマセン)。
ktty1220さま
sumiokaです。 ご返信ありがとうございます。 現状でのしのぎ方の例をくださりありがとうございます! 確かに、それで出来そうですね。助かりました。
0.4.0で適用されるとしたらすばらしいですね。
ブランチを教えてくださったのですが、0.4.0-wip branchへのPullRequestを 出してもいいのですか?やってみてもいいですか?
(やったことないので、やってみたいだけです(笑)、無視していただいて構いません)
いずれにしろ、応答くださりありがとうございました。
2015年10月28日 19:18 ktty1220 notifications@github.com:
ありがとうございます。自分のほうでも調べてみました。
- ブラウザのJavaScriptコンソールで$('form').submit() を実行すると、送信パラメータにはsubmit関係の要素は全く含まれない(Firefox/Chromeで確認)。
- submitボタンをクリックして送信した場合はそのボタンのnameとvalueが送信パラメータに付加される
- input[type=image]をクリックして送信した場合はその画像ボタンのクリック位置の座標がname.x、name.y という形式で送信パラメータに付加される
現在のcheerio-httpcliでは上記のような挙動ではなく、一律でsubmitだろうがimageだろうがパラメータをセットしてしまっているので、sumiokaさんのPRも含めたフォーム送信周りの挙動を修正中です。
ただ、間違っていたとはいえ、今までその挙動だからこそ上手く動いていたというケースもあると思うので、今回の変更はある意味前バージョンとの互換性が失われることになります。したがって、マイナーバージョンを1つ上げて 0.4.0としてリリースするためにちょっと色々追加する予定です(現在0.4.0-wipブランチで作業中)。
0.4.0リリースまでもうしばらくお待ちくださいませ。
ちなみに当座を凌ぐ方法としては、
$('input[name=edit]').remove(); $('form').submit( ...
とかやって編集ボタンを無理やり消して送信すれば、今回のような複数submitボタンのフォームでもとりあえずは上手く動きそうな気がします(ダメだったらスミマセン)。
— Reply to this email directly or view it on GitHub https://github.com/ktty1220/cheerio-httpcli/pull/3#issuecomment-151791706 .
おっと、もう、0.4.0-wipには対処コード入ってましたね。では、こちらはこれで閉めておきますね。 おつかれさまです。これからも頑張ってください。
現状では、以下のように書かれた場合に、editとdeleteの両方のname, valueがサーバに送信されます。
私が試したところでは、submitはボタンが押された方のinputのnameとvalueしかサーバに 送信されないようです。実際、上の例では押すボタンによって、editかdeleteのどちらかしか サーバに到達しませんでした。
私がスクレイピングしたいサイトでは、どうやら、この仕組みを使って、押したボタンを サーバでわかるようにしているようで、今の実装だといつでも編集をすることになってしまい、 ちょっと困ってしまいました。
もし可能であれば、この修正を受け入れてください。