【问题标题】:Ajax Inquiry POST阿贾克斯询价帖
【发布时间】:2015-01-13 00:44:06
【问题描述】:
$.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 请求将显示来自该页面的数据(我试图获得的排名)。

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

【问题讨论】:

  • 您的代码我不清楚,也不清楚您需要什么,如果您有任何错误,请提供更多信息以提供帮助
  • 我只是想让它记录它应该点击的页面的数据。 __EVENTTARGET 按钮是它应该点击的按钮,我希望它记录该页面的数据。
  • 什么是url?为什么不使用gg 做任何事情?
  • 我对 Ajax 很陌生。我认为 url 是与 ajax 请求一起发送的 URL。我忘了我有 gg 在那里,我需要摆脱它。
  • 我已回滚您的问题编辑。请不要用我的回答替换您自己的代码。这对您的问题来说是一个实质性 的改变——而且它的风格也非常糟糕。您来这里是为了自己学习东西,而不是在有人写出您需要的代码之前重新发布其他人的代码。说真的,这很冒犯。

标签: ajax post get roblox


【解决方案1】:

我想你想要这样的东西:

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() 创建另一个函数并返回它。 That 函数接受 HTML 字符串作为其参数,解析出 viewstate 和 eventvalidation 并将与 webforms 兼容的回发发送到预先确定的目标控件.实际上,它封装了发送 webforms 事件的操作。

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

注意事项:

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

推荐阅读:

【讨论】:

  • 这样,正确。我也只需要它来输出名称,那我该如何解决呢?
  • 什么名字?你想把它们输出到哪里?
  • 你不是真的要我在我的代码中添加带有console.log() 的行,是吗?
猜你喜欢
  • 2010-10-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-22
  • 2018-05-15
  • 2018-07-04
  • 1970-01-01
  • 2023-03-21
相关资源
最近更新 更多