2013-07-18 43 views
-2

似乎已經有很多SO條目存在,但我找不到Silver Bullet來解決我的問題。jQuery:使用jQuery解析ajax HTML頁面結果

基本上我只想一個Ajax方式來顯示我的網頁上谷歌的搜索結果,所以我做了一個示例頁面的代碼就像下面:

<html> 
<head> 
<title>Baidu</title> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script> 
</style> 
<script> 
$(document).ready(function() { 
    var obj = 
     $.ajax({ 
      url:"https://www.google.com/search?q=stackoverflow" 
     }); 
    alert(obj); 
}); 
</script> 
<body> 
</body> 
</html> 

後,我得到了一個[object object]。所以我的問題是:

  1. 我得到了什麼以及如何解析它?
  2. 在我的情況下,我應該使用方法jQuery.ajax()來設置哪些參數?
+2

交叉DOMIN問題..使用JSONP ......並使用'的console.log(OBJ)'來查看對象的你dveveloper工具控制檯,而不是'alert' – bipen

+0

這是不可能的,無論你做什麼,谷歌都使用幀封鎖,並使用JavaScript插入你在屏幕上看到的所有內容,所以你simpy無法以這種方式刮取Google,當然不與JavaScript。 – adeneo

回答

1

由於Same Origin Policy,您不能對Google進行ajax調用,因爲它們的域與您的代碼的域不同。

建議的解決方案是通過駐留在同一個域上的服務器端腳本代理請求,併發出HTTP請求以獲取搜索結果或使用Custom Search API

0

前面已經提到的,你不能使用AJAX調用到另一個域

要檢索的谷歌搜索結果編程您可以嘗試使用他們的custom search api

0

谷歌已經API進行自定義搜索ANS設計。這是link

要查看[object object]內容中庸之道使用本fonction:

alert(print_r(obj,true)); 

function print_r (array, return_val) { 
    var output = '', 
    pad_char = ' ', 
    pad_val = 4, 
    d = this.window.document, 
    getFuncName = function (fn) { 
     var name = (/\W*function\s+([\w\$]+)\s*\(/).exec(fn); 
     if (!name) { 
     return '(Anonymous)'; 
     } 
     return name[1]; 
    }, 
    repeat_char = function (len, pad_char) { 
     var str = ''; 
     for (var i = 0; i < len; i++) { 
     str += pad_char; 
     } 
     return str; 
    }, 
    formatArray = function (obj, cur_depth, pad_val, pad_char) { 
     if (cur_depth > 0) { 
     cur_depth++; 
     } 

     var base_pad = repeat_char(pad_val * cur_depth, pad_char); 
     var thick_pad = repeat_char(pad_val * (cur_depth + 1), pad_char); 
     var str = ''; 

     if (typeof obj === 'object' && obj !== null && obj.constructor && getFuncName(obj.constructor) !== 'PHPJS_Resource') { 
     str += 'Array\n' + base_pad + '(\n'; 
     for (var key in obj) { 
      if (Object.prototype.toString.call(obj[key]) === '[object Array]') { 
      str += thick_pad + '[' + key + '] => ' + formatArray(obj[key], cur_depth + 1, pad_val, pad_char); 
      } 
      else { 
      str += thick_pad + '[' + key + '] => ' + obj[key] + '\n'; 
      } 
     } 
     str += base_pad + ')\n'; 
     } 
     else if (obj === null || obj === undefined) { 
     str = ''; 
     } 
     else { 
     str = obj.toString(); 
     } 

     return str; 
    }; 

    output = formatArray(array, 0, pad_val, pad_char); 

    if (return_val !== true) { 
    if (d.body) { 
     this.echo(output); 
    } 
    else { 
     try { 
     d = XULDocument; 
     this.echo('<pre xmlns="http://www.w3.org/1999/xhtml" style="white-space:pre;">' + output + '</pre>'); 
     } catch (e) { 
     this.echo(output); 
     } 
    } 
    return true; 
    } 
    return output;