2010-10-21 71 views
0

我想發佈到一個外部的php文件並得到結果。它是我在我的服務器上託管的一個php。我想通過ajax在我的localhost發佈靜態頁面,並在div中加載html。但我無法做到這一點。Jquery Post to external php

$.post("http://www.site.com/index.php", { font: "panchami", input: "hi" }); 

這裏有什麼不對嗎?

+0

1)沒有回調函數。 2)AJAX跨源(閱讀:張貼到另一臺服務器)仍然沒有廣泛支持 – Harmen 2010-10-21 13:49:11

回答

2

Javascript doesn't allow cross domain requests.

你可以做的是你的服務器reads the contents of the other site上的PHP文件:

<?php echo file_get_contents($_REQUEST['url']); ?> 

然後做出請求你的文件,如下所示:

$.post("proxy.php?url=external_url", ...); 
+0

PHP代理方法是一個非常有吸引力的方法,但請注意,顯示的代碼可能被誤用爲通用代理,這是不好的。您需要構建一些安全措施,例如檢查「REFERER」或可能的目標URL的有限列表 – 2010-10-21 13:52:59

3

Same Origin Policy阻止對外部域的Ajax調用。

流行的解決方法包括

  • JSONP
  • 嵌入數據在iframe代替
  • 使用服務器端代理抓取網頁(見@ BrunoLM的回答一個PHP的例子,它是可能的在任何服務器端語言)
  • YUI在@亞歷克斯的答案顯示的Get

取決於你的用例是什麼。

0

這種請求是危險的,它被稱爲跨站點請求,並被大多數瀏覽器禁止。如果你看看你的錯誤控制檯,你應該看到一個消息。

如果你真的沒有其他選擇,那麼你可以考慮使用iframes,src屬性可以在當前域之外,你可以使用javascript解析信息。

希望幫助:)