簡體   English   中英

使用AJAX在單獨的文件中調用php函數

[英]Calling a php function in a separate file using AJAX

我一直在寫一個貨幣轉換器,需要使用jQuery和AJAX來往和從貨幣發送,以及要轉換為PHP文件的值,這將返回轉換后的值。

我的解決方案基於: 如何通過JavaScript調用PHP函數? 但是它似乎不起作用。

jQuery代碼:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>

<script>
function exchange(from, to, amount){
    alert("got to here"); //this alert shows
    jQuery.ajax({
        type: "POST",
        url: 'exchange_caller.php',
        dataType: 'json',
        data: {functionname: 'exchange_rate_convert', arguments:["USD", "EUR", 1]},
        //dummy pass values

        success: function (obj, textstatus){
            if( !('error' in obj)){
                answer = obj.result;
                alert(answer);      //neither of these alerts show
                alert('anything');
            }
            else{
                console.log(obj.error);
                alert("got an error"); //this alert doesn't show
            }
        }
    });
    alert("passed the block"); //this alert shows
    return false;               //return false so the page doesn't refresh
}</script>

php文件“ exchange_caller.php”中的代碼(設置為虛擬)。

<?php header('Content-Type: application/json');

$aResult = array();

if(!isset($_POST['functionname'])){
    $aResult['error'] = 'No function name!';
}
if(!isset($_POST['arguments'])){
    $aResult['error'] = 'No function arguments';
}
if(!isset($aResult['error'])){
    switch($_POST['functionname']){
        case 'exchange_rate_convert':
            if(!is_array($_POST['arguments']) || (count($_POST['arguments']) < 3)){
                $aResult['error'] = 'Error in arguments!';
            }
            else{
                $aResult['result'] = exchange_rate_convert($_POST['arguments'][0], $_POST['arguments'][1], $_POST['arguments'][2]);
            }
            break;

        default:
            $aResult['error'] = 'Not found function '.$_POST['functionname'].'!';
            break;
    }
}

echo json_encode($aResult);

function exchange_rate_convert($from, $to, $amount){    //function to run
    //dummy code, just return 2 for now
    $value = 2;
    return $value;
}?>

運行此命令時,我會收到“到達此處”並“通過了阻止”錯誤消息,但是當我應該返回結果時,都沒有這兩個消息。

任何幫助將不勝感激。

謝謝。

我用發布的代碼設置了文件,它們按預期運行。

似乎還有另一個與提供的代碼無關的問題。

我建議確保您的托管環境沒有問題。 請查閱您的服務器日志,以查看是否有其他問題阻止您的請求得到滿足,並在另一個瀏覽器中對其進行測試,以確保沒有插件或擴展干擾該請求。

暫無
暫無

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

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