簡體   English   中英

來自AJAX調用的外部PHP函數

[英]External PHP Function from an AJAX call

我網站上的所有字符串均來自lang.php中名為lang()的php語言函數。 當我在index.php文件中使用該函數時,該函數有效,即:

<p><? echo lang('hello-world'); ?></p>

但是,如果我使用elem.load('something.php'); ,其中something.php包含與上述相同的代碼,則不會返回任何內容。 實際上,如果我鍵入:

<p><? echo haslkdfhasdf('hello-world'); ?></p>

我什至沒有出錯。 現在, 在ajax中閱讀此Call PHP函數並使用header()之后,我仍然沒有得到返回的字符串。 然后我的問題是,為什么該功能不能通過AJAX加載的外部php文件中運行,我想念的是什么?

[編輯]糟糕,忘記了我的AJAX代碼。 這是我用來加載文件的內容:

$('#main-content').load('_foo/views/error.php');

這是error.php文件:

<p id="ajax-error-message">
<? echo lang('html'); ?>
</p>

現在,我知道文件已加載,因為如果將函數替換為“ echo'Hello World';” 它正確顯示它。 這是您需要的站點: http : //afoobar.com ,當您單擊HTML5 Sandbox時,它將執行AJAX。

同時,我會嘗試您的建議!

由於我沒有看到您的JavaScript代碼(減去elem.load()所以我無法為您提供有保證的解決方案 。但是,我可以建議您將elem.load()更改為以下內容:

$.ajax({
    url: 'something.php',
    cache: false,
    success: function(response) {
        // do something
    },
    error: function(xhr, error) {
        try {
            console.debug(xhr); 
            console.debug(error);
        } catch (err) {
            alert(err);
        }
    }
});

另外,您可以使用$.ajaxSetup();進行幾乎相同的操作$.ajaxSetup();

編輯

請記住,您已經在AJAX調用中include (或require )所有需要的文件,因為它實際上是在發出單獨的HTTP請求

// at the top of error.php
require_once '/path/to/lang.php';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM