【问题标题】:POST using XMLHttpRequest with existing source使用 XMLHttpRequest 与现有源进行 POST
【发布时间】:2011-11-06 19:49:51
【问题描述】:

我只想使用 XMLHttpRequest 做的事情是这样的:

  • 脚本下载一个网页,其中只有一个表单。
  • 脚本将文本插入到字段中。
  • 脚本提交表单,同时保留有关输入标签的所有详细信息。

我完成了第一部分,但我不知道如何完成接下来的两个步骤。

注意:我无法控制下载的页面,它不是格式良好的 XML/HTML。

有人可以向我解释如何完成这项工作吗?

这是针对 Google Chrome 扩展程序的,所以我拥有所需的所有权限。

编辑:这是我当前的代码:

$.ajax({ url: "http://www.mysite.com/my/testpage.aspx",
        type: "POST",
        data: {
        html: http0.responseText.between("<body>", "</body>")
              },
        success: function(data) {
            var dom = $(data),
            form = dom.filter('form');
            form.attr('onsubmit', 'document.getElementById("error").value = "I\'m done!"; document.getElementById("helpmebutton").disabled = false;');
            form.attr('action', 'http://www.mysite.com/my/testpage.aspx');
            $('#tempdiv').append(form);
            form.find('input[name="ctl00$ctl00$cphSite$cphMySiteContent$linkLocation"]').val(document.getElementById("result").value);
            form.submit();
        }
    });

【问题讨论】:

    标签: javascript http google-chrome-extension xmlhttprequest


    【解决方案1】:

    我真的会使用 jQuery 来节省时间和麻烦。

    创建一个临时的div,ID 为tempdiv,并将所有内容放入该div。然后,填写适当的元素并提交表单,如下所示:

    $.ajax({ url: "http://...",
             success: function(data) {
                 var dom = $(data),
                     form = dom.filter('form');
    
                 $('#tempdiv').append(form);
    
                 form.find('input:text').val(123);
                 // all input[type=text] get value 123
    
                 form.submit();
             }
    });
    

    【讨论】:

    • 这不起作用。我将编辑问题并提供更多详细信息。
    • @Bogdacutu:也许我误解了。这是我的意思的演示(我确实纠正了一些事情):jsfiddle.net/UELKF.
    • 我去试试;但是如何更改form.find('input:text').val(123); 以按名称选择输入?
    • @Bogdactu:这些基本上是 CSS 选择器,例如input[name="something"].
    • 我要试试,然后回来发布结果。无论如何都支持:)
    猜你喜欢
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-12
    • 2016-12-05
    相关资源
    最近更新 更多