2016-12-03 23 views
0

嗨,我是一個初學者程序員,使用JavaScript和PHP。我有一頁按鈕,並且我正在嘗試將ahref按鈕分配到其各自的vendordetails.html頁面。到達vendordetails.html後,一個php代碼將運行到SELECT * where vendorid = $vendorid並在html頁面中顯示*。
我的情況
當我點擊按鈕#2,URL發送過是這樣的:如何獲取URL參數中的值? xmlhttp.status返回500

http://servername/..../vendordetails.html?vendorid=2 

在^頁面,我可以收到「2」從使用getUrlVars()功能的URL參數。
alert(decodeURIComponent(getUrlVars()["vendorid"])); // alerts the value '2'.

然而,當我做了Ajax調用,xmlhttp.status回報「500」,而不是200,意思就是那裏有一個內部服務器錯誤,而發送的參數可能不正確。我非常懷疑它是我的PHP代碼,但根本找不到任何錯誤(它與工作顯示按鈕php文件類似),我想找一些指導!

vendordetails.html

var vendorid = decodeURIComponent(getUrlVars()["vendorid"]); 
alert(decodeURIComponent(getUrlVars()["vendorid"])); //alerts 2 

function displayvendordetails(){ 
    var xmlhttp = new XMLHttpRequest(); 
    var url = serverURL() + "/vendordetails.php"; 
    url += "?vendorid=" + vendorid.trim(); 
    //also tried using ?vendorid = decodeURIComponent(getUrlVars()["vendorid"]) 
    alert(url); //alerts http://servername/..../vendordetails.php?vendorid=2 

    xmlhttp.onreadystatechange=function() { 
    //alert(xmlhttp.readyState); alerts 4 
    alert(xmlhttp.status); //alerts 500 
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
     alert("hello working"); //not alerted, code stops working after if statement 
     getdisplayResult(xmlhttp.responseText); 
    } 
    } 
    xmlhttp.open("GET", url, true); 
    xmlhttp.send(); 
} 

function getdisplayResult(response){ 
    var arr = JSON.parse(response); 
    var i;  

    for(i = 0; i < arr.length; i++) { 

    if (arr[0].vendorname.trim() != ""){ 
     vendorname = arr[0].vendorname; 
     //var vendorname; declared outside 
     $("#vendorname").html(arr[0].vendorname); 
    } 

    if (arr[0].vendortype.trim() != ""){ 
     vendortype = arr[0].vendortype; 
     //var vendortype; declared outside 
     $("#vendortype").html(arr[0].vendortype); 
    } 

    if (arr[0].rebatepercentage != ""){ 
     $("#rebatepercentage").html(arr[0].rebatepercentage + "%"); 
    }  
    }  
} 

displayvendordetails(); 

function getUrlVars() { 
    var vars = {}; 
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, 
    function(m,key,value) { 
     vars[key] = value; 
    }); 
    return vars; 
} 

vendordetails.php

header("Access-Control-Allow-Origin: *"); 
header("Content-Type: application/json; charset=UTF-8"); 

$conn = new mysqli("localhost", "my_user", "my_password", "world"); 

$vendorid = $_GET['vendorid']; 

$result = $conn->query("SELECT vendorname, vendortype, rebatepercentage WHERE vendorid = '" . $vendorid. "' "); 

$outp = "["; 

while($rs = $result->fetch_array(MYSQLI_ASSOC)) { 

    if ($outp != "[") {$outp .= ",";} 

    $outp .= '{"vendorname":' . $rs["vendorname"] . ','; 

    $outp .= '"vendortype":"' . $rs["vendortype"] . '",'; 

    $outp .= '"rebatepercentage":"' . $rs["rebatepercentage"] . 

    '"}'; 

} 

$outp .="]"; 

$conn->close(); 

echo($outp); 

在PHP代碼應該返回:

[{"vendorname":"Test","vendortype":"Apparel","rebatepercentage":"20"}, {...}, {...}] 

附加說明:
1.請保持ajax調用w/o jQuery,因爲我更熟悉該格式。
2. serverurl()是一個全球性的js文件中定義,我已確認這是正確的

+0

如果你進入你的PHP錯誤日誌,是否有任何錯誤?你可以通過執行'var_dump(ini_get('error_log'));'和PHP將它輸出到你的瀏覽器來找出錯誤記錄的位置。還要確保通過執行var_dump(ini_get('log_errors'));'來啓用錯誤日誌記錄。 – bugfroggy

+0

我的電話公司在全島範圍內遇到問題,所以我無法登錄到我的服務器以立即更改我的php代碼!當我醒來時會試試這個! –

+0

仍然試圖讓它回聲將盡快回復 –

回答

0

不正確的SQL語句,應該是
「SELECT vendorname,vendortype,rebatepercentage FROM Vendors WHERE Vendorid =」。$ vendorid);

0

可能不完全有益的,但如果你使用Chrome,你可以右鍵單擊>檢查>網絡,然後用這個開放你可以重新執行ajax頁面,你會看到所有的http請求,它們的類型,狀態和響應,當ajax完成時點擊「停止記錄」。您可以檢查ajax GET請求的HTTP標頭並查看它們是否如預期的那樣。如果他們沒問題,這個問題必須在php/server上。

+0

嘿謝謝你的輸入!我似乎找不到'vendordetails.html'的ajax GET請求行,但在我的其他工作頁面上有一個'profiledetails.html',它看起來像[這樣](http://imgur.com/a/ 9sF6r)。所以理想情況下,我希望我的ajax GET請求角色擁有200的權利 –

+0

[以下是供應商詳細的http請求列表](http://imgur.com/EqQHc4p) –

+0

單擊供應商詳細信息的頂部請求以查看內部請檢查GET的URL是否正確,如果是,請檢查響應是否與您期望的類似[link](http://pasteboard.co/5u3bnvtjB.png) –