免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2522 | 回复: 5
打印 上一主题 下一主题

Ajax.Request问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-08 23:02 |只看该作者 |倒序浏览
20可用积分
有一个web页面:       
                                                        <dd><button id="buy-all" class="inputbutton" onclick="this.disabled=true;this.className='inputbutton graybg';buyAll(70,5,10)">买进全部(<strong>5</strong>件)</button></dd>
其中buyAll函数的实现用了Ajax.Request方法:
function buyAll(product_id, count, int_current_price) {
        if(warning()){
                var url = "/confirmBuyProduct.do";
                var pars = "confirm=true" +
                                        "&product_id=" + product_id +
                                        "&count=" + count +
                                        "&buy_price=" + int_current_price;
       
                new Ajax.Request(url, {
                        method :'post',
                        parameters :pars,
                        onComplete :showResult,
                        onFailure : function() {
                                alert("购买失败");
                        }
                });
        }else
                alert("处理中请等待!");
}

我想写一个脚本来完成自动购买功能,应该怎样写呢?
我试过以下方法都失败了:
1. $res = $ua->get(“http:\/\/$url\/confirmBuyProduct\.do\?confirm=true\&product_id=1\&count=1\&buy_price=2”);
2. 用LiveHTTPHeaders查看headers里发出的是confirm=true&product_id=1&count=1&buy_price=2&_=,所以改成$ua->get(“http:\/\/$url\/confirmBuyProduct\.do\?confirm=true\&product_id=1\&count=1\&buy_price=2\&_=”);还是不行
3.         $res = $ua->post('http://tycoon.xiaonei.com/confirmBuyProduct.do',
        [
        parameters => 'confirm=true&product_id=1&count=1&buy_price=2',
        ]
        );
全都说数据错误。
我不懂Ajax,perldoc cgi::Ajax出来的好像都是服务器端的,网上的Ajax教程也都是教怎么做网页,所以只好上来请教大家了。先多谢了!

最佳答案

查看完整内容

楼主都已经会用HTTP LIVE HEADER了, 那么HTTP LIVE HEADER里面看到的request真的跟你的LWP的request一摸一样吗。你Dumper($response)就能看到request了通常情况下有可能是referer, cookie这些东西有不同。

论坛徽章:
0
2 [报告]
发表于 2008-09-08 23:02 |只看该作者
楼主都已经会用HTTP LIVE HEADER了,

那么

HTTP LIVE HEADER里面看到的request真的跟你的LWP的request一摸一样吗。
你Dumper($response)就能看到request了

通常情况下有可能是referer, cookie这些东西有不同。

论坛徽章:
0
3 [报告]
发表于 2008-09-09 00:04 |只看该作者
你没掌握解决问题的办法。
现在你要做的,就是使用wireshark之类的抓包工具,看看浏览器到底提交了怎么样的数据包过去,然后你对比,照做就是了。

论坛徽章:
0
4 [报告]
发表于 2008-09-09 20:37 |只看该作者
我用wireshark试了一下,得到的跟LiveHTTPHeaders差不多。
那我试一下,看看cookie什么的

论坛徽章:
0
5 [报告]
发表于 2008-09-10 16:23 |只看该作者
成功解决啦~
确实是header的问题。我把header都加上以后就成功了。最好检查了一下发现是缺
'User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.16) Gecko/20080702 Firefox/2.0.0.16',
这一项。
可能server那端不接受'libwww-perl/5.65'?这是什么原因呢?

论坛徽章:
0
6 [报告]
发表于 2008-09-11 13:05 |只看该作者
有些网站确实会检查UA的。 比如如果你用一个手机浏览器的UA去访问google.com,会被重定向到手机版的google.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP