如何使用ajax解析远程网站

时间:2013-01-31 01:19:57

标签: jquery dom cross-domain jsonp

我正在尝试使用JSONP解析远程网站的DOM我觉得问题是当我得到响应时它不是JSON所以延迟对象失败了,但是我不能把原始数据拿到那里并以某种方式遍历dom节点? $(document).ready(function(){

                    $('#submitUrl').on('click', function() {

                          var words = {};

                          var url = $('#url').val();


                          //send a JSONP request since its the only cross domain method available
                          var options = {
                                dataType: "JSONP",
                                type: 'GET',
                                url: url,
                          };
                          var arr = new Array();
                          var countArr = new Array();

                          var jqxhr = $.ajax(options)
                                  .done(function(data) {
                                //this will always fail since jquery expects valid json response, try parsing in always pipe

                          })
                                  .fail(function() {

                          })
                                  .always(function(data) {


                                var fileDom = $(data);
                                //grab each element under the body dom element
                                //probably a filter method would work faster
                                fileDom.find('body *').each(function(index, value) {
                                      if ($(this).text())
                                      {
                                            var txt = $(this).text();
                                            //is this in the array already
                                            if ($.inArray(txt, arr)) {
                                                  //get current ocunt
                                                  var c = parseInt(countArr[txt]);
                                                  c++;
                                                  countArr[txt] = c;
                                            }
                                            else {
                                                  countArr[txt] = 1;

                                            }



                                      }


                                });
                          });

                    });

              });

HTML

    <label>Input URL</label>
                                <input type="text" name="url" id="url" value=""/>
                                <input type="submit" id="submitUrl">

1 个答案:

答案 0 :(得分:1)

你做不到。

为了能够使用jsonp - 远程端应该以特殊格式给出响应(包含在回调函数中)。

因此,根据定义,将jsonp与任意网页结合使用是不可能的。