2016-12-03 12 views
0

こんにちは私は、JavascriptとPHPを使用して、初心者のプログラマーです。私はボタンのページを持っており、ahrefそれぞれのvendordetails.htmlページのボタンにしようとしています。 vendordetails.htmlに達すると、PHPコードはSELECT * where vendorid = $vendoridになり、htmlページに*が表示されます。私はボタン#2をクリックすると
私の状況は
、オーバー送信URLは次のようになります。URLパラメータの値を取得する方法は? xmlhttp.status returns 500

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

^ページで、私が受け取ることができる「2」getUrlVars()機能を使用してURLパラメータから。しかし
alert(decodeURIComponent(getUrlVars()["vendorid"])); // alerts the value '2'.

、私は内部サーバーエラーをtheresのAjax呼び出し、xmlhttp.status戻り「500」の代わりに200の、意味を作り、そして時に送信されたパラメータが正しくない可能性があります。私はそれが私のPHPコードだと大いに疑うが、単に間違いを見つけることができない(それは作業表示ボタンのphpファイルと似ている)、私はいくつかのガイダンスを見つけたい! PHPコードが返さなければならないこと

vendordetails.html

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); 

vendordetails.php

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; 
} 

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

追加注:
1. jQueryを使用しないでajax呼び出しを保存してください。私はその形式をよく知っています。
2. serverurl()あなたはグローバルのjsファイルで定義されていると私はそれが正しい

+0

PHPエラーログに行くと、エラーがありますか? 'var_dump(ini_get( 'error_log'));'を実行すると、エラーがどこに記録されているのかを知ることができ、PHPはブラウザに出力します。また、 'var_dump(ini_get( 'log_errors'));'を実行することでエラーログが有効になっていることを確認してください。 – bugfroggy

+0

私のTelcoは全島に問題がありますので、私のサーバーにログインして今すぐ自分のPHPコードを変更することはできません!私が目を覚ますときにこれを試してみよう! –

+0

まだエコーを取得しようとするとすぐにあなたに戻ってきます –

答えて

0

不正なSQL文、それが "vendorname、ベンダー型、ベンダーID =ベンダーからrebatepercentage SELECT" を
でなければなりません$ベンダーID)。

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

[ここにはvendordetailsのためのhttpリクエストのリストがあります](http://imgur.com/EqQHH4p) –

+0

トップに戻るGETのURLが正しいことを確認します。はいの場合は、[link](http://pasteboard.co/5u3bnvtjB.png)と同様に応答が期待どおりであることを確認します。 –

関連する問題