0
$.ajax({
  url: "http://www.roblox.com/My/Groups.aspx?gid=148530",
  success: function(data) {
    console.log(data);
    var gg = data
    function Post(){
      $.get(url,function(Data){
        var VS = Data.match(/id="__VIEWSTATE" value="(.+)"/)[1]
        var EV = Data.match(/id="__EVENTVALIDATION" value="(.+)"/)[1]
        $.post(url,{
          "__VIEWSTATE" : VS,
          "__EVENTVALIDATION" : EV,
          "__EVENTTARGET" : "ctl00$ctl00$cphRoblox$cphMyRobloxContent$GroupMemberAdminPane$dlMembers_Footer$ctl02$ctl00",
          "__EVENTARGUMENT" : 'Click',
        })
      })
    }
    Post()
  }
})

我试图让它以相反的方式记录它,因此$.post请求将显示来自该页面的数据(我试图获得的排名)。

请帮忙?我真的需要尽快得到答案。

4

1 回答 1

0

我想你想要这样的东西:

function postback(eventTarget, eventArgument) {
    return function (html) {
        var $html = $("<div>").append(html);

        $.post(this.url, {
            __VIEWSTATE: $html.find("#__VIEWSTATE").val(),
            __EVENTVALIDATION: $html.find("#__EVENTVALIDATION").val(),
            __EVENTTARGET: eventTarget,
            __EVENTARGUMENT: eventArgument
        });
    };
}

var url = "http://www.roblox.com/My/Groups.aspx?gid=148530",
    target = "ctl00$ctl00$cphRoblox$cphMyRobloxContent$GroupMemberAdminPane$dlMembers_Footer$ctl02$ctl00";

$.get(url).done(postback(target, "Click"));

这里发生了什么:

该函数postback()创建另一个函数并返回它。函数接受一个 HTML 字符串作为其参数,解析出视图状态和事件验证,并将与webforms兼容的回发发送到预定的目标控件。实际上,它封装了发送 webforms 事件的操作。

最后一行执行实际工作:它获取url和调用postback()(生成匹配的 Ajax 成功回调函数)。一旦 Ajax 请求成功返回,.done()就会调用回调,然后触发控件上的单击事件。

笔记:

  • 尝试从与脚本运行的域不同的域获取 URL 将失败(请参阅同源策略)。
  • 强烈建议不要使用正则表达式解析 HTML。正如你所看到的,使用像 jQuery 这样强大的东西,正确地执行它甚至更容易阅读。
  • 在发布事件之前,您可能应该包含一个完整性检查以查看目标控件是否甚至存在于页面中。( if ($html.find("#" + eventTarget).length) ...)
  • 分号。使用它们。

推荐阅读:

于 2014-11-15T20:51:34.617 回答