嗨,我是一個初學者程序員,使用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文件中定義,我已確認這是正確的
如果你進入你的PHP錯誤日誌,是否有任何錯誤?你可以通過執行'var_dump(ini_get('error_log'));'和PHP將它輸出到你的瀏覽器來找出錯誤記錄的位置。還要確保通過執行var_dump(ini_get('log_errors'));'來啓用錯誤日誌記錄。 – bugfroggy
我的電話公司在全島範圍內遇到問題,所以我無法登錄到我的服務器以立即更改我的php代碼!當我醒來時會試試這個! –
仍然試圖讓它回聲將盡快回復 –