簡體   English   中英

如何從ajax調用的php返回值?

[英]How to return values from php called by ajax?

所以,我有一個Gridbox。 如果用戶點擊回車,gridbox將創建一行並加載用戶插入的數據。 程序應運行一個mysql查詢,其中包含用戶點擊回車時插入的那些數據。

現在,我有一個帶有javascripthtml頁面,用於控制Gridbox動作。 當用戶點擊Enter時,將調用此js

<script type="text/javascript" >
    var dbs=0;
    var val=[];
    function myFunction(e) {
            if(e.keyCode == 13){
                var newId = (new Date()).valueOf();
                var value=gridbox.cells(1,0).getValue();
                if(value.substring(0,5)=="JrLbl")
                {
//the getfn(value) should returns the value of the mysql query 

                    gridbox.addRow(newId,[value.substring(5,(value.indexOf(".")-4)),getfn(value)]);
                }
                val.push(value);
                gridbox.cells(1,0).setValue('');
                gridbox.editCell(1,0);
                dbs=dbs+1;
            }
    }
    function upload(){
        var jsonString = JSON.stringify(val);

            var jsonData = $.ajax({
                type: "POST",
                  url: "upload.php",
                  data: { 'data' : jsonString},
                  dataType:"json", 
                      async: false
                  }).responseText;


        }
    function getfn(str){
        xmlhttp = new XMLHttpRequest();
        var lblid= str.substring(str.indexOf(".")+6,str.length);
        alert(lblid);
        xmlhttp.open("GET","getfn.php?q="+lblid,true);
        xmlhttp.send();

    }

</script>

並在getfn.php中運行mysql查詢:

<?php
header('Content-Type: text/html; charset=UTF-8');
require_once($_SERVER['DOCUMENT_ROOT']."globalfunctions/globalClasses.php");
require_once($_SERVER['DOCUMENT_ROOT'].'globalfunctions/GlobalParameters.php');
error_reporting ( E_ALL ^ E_DEPRECATED);
$q = intval($_GET['q']);

$db_jira = new indotekDbConnection("jira");
            $sql=mysql_query("SELECT FajlNev
                from indoteklabels
                where ID='$q'");
            $FajlNev=mysql_fetch_row($sql);
            return $FajlNev[0];
            $db_jira->Close();
            unset($db_jira);
?>

並返回數據應該去的地方

在此處輸入圖片說明

而不是使用return $FajlNev[0]; 使用$data = $FajlNev[0]; echo json_encode($data); $data = $FajlNev[0]; echo json_encode($data);

function getfn(str){
        xmlhttp = new XMLHttpRequest();
        var lblid= str.substring(str.indexOf(".")+6,str.length);
        //alert(lblid);
        xmlhttp.open("GET","getfn.php?q="+lblid,true);

        xmlhttp.responseType = 'text';

        xmlhttp.onload = function () {
            if (xmlhttp.readyState === xmlhttp.DONE) {
                if (xmlhttp.status === 200) {
                    var newId = (new Date()).valueOf();
                    gridbox.addRow(newId,[str.substring(5,(str.indexOf(".")-4)),xmlhttp.response]);
                    gridbox.cells(1,0).setValue('');
                    gridbox.editCell(1,0);
                    //console.log(xmlhttp.response);
                    //console.log(xmlhttp.responseText);
                }
            }
        };
        xmlhttp.send();


    }

您的PHP腳本正在生成一個空白頁。 return關鍵字在函數之外沒有任何意義,只是終止腳本。 如果要處理結果,則需要將值顯式echo顯到頁面上。

在您的Web瀏覽器中導航到getfn.php?q=123 無論您看到什么,都將看到您的AJAX請求。 現在它將是空白頁。 如果您想要JSON,請echo json_encode($the_data_i_want_back)

另外:您似乎正在使用jQuery。 如果是這樣,您最好使用jQuery的內置跨瀏覽器AJAX功能,而不是使用原始JS XMLHttpRequest。

暫無
暫無

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

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