0

JSONP を使用してリモート Web サイトの 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">
4

1 に答える 1

1

それをしてはいけない。

使用できるようにするにはjsonp、リモート側が特別な形式で応答を返す必要があります (コールバック関数にラップされます)。

そのため、定義上jsonp、任意の Web ページで使用することはできません。

于 2013-01-31T01:21:49.357 に答える