2017-04-04 17 views
0

あなたが手助けできるかどうか疑問に思っていました。変数をPHPファイルに渡し、その変数を使用してSQLクエリを実行し、結果を変数としてJavaScriptに渡します。現在、Ajaxを使用してPHPをJavaScriptに正常に戻しましたが、ServiceNameをPHPファイルに送信できませんでした。ファイルが別々のままであることは不可欠です。また、私はプライバシーのために特定のセクションを置き換えていることを明確にするために、コード内で正しく働いています。私はすでに$ _GETメソッドを使用していますが、新しいウィンドウにアクセスし、PHP変数を返さないようにJavaScriptを取得することしかできませんでした。次のようにJavascript変数をPHPファイルに渡す

私の現在のコードは次のとおりです。

// If the user changes the ServiceID field. 
if (sender.getFieldName() == 'ServiceID') 
    // Declare the value of the new Service name and save it in the variable A. 
    a = sender.getValue(); 

{  
    // if it equals a new variable. 
    if (sender.getValue() == a) { 
    // Place it within the URL, in order for it to be processed in the php  code. 
    window.location.href = "http://IP/development/Query01.php?service=" + a; 

    // Attempted code 
    // echo jason_encode(a); 
    // $.ajax({var service = a; 
    // $.post('http://IP/development/Query01.php', {variable: service}); 
    // } 

    //use AJAX to retrieve the results, this does work if the service name  is hard coded into the PHP. 
    $.ajax({ 
     url: "http://IP/development/Query01.php", 
     dataType: "json", //the return type data is jsonn 
     success: function(data) { // <--- (data) is in json format 
     editors['Contact2'].setValue(data); 
     //alert(data); 
     //parse the json data 
     } 
    }); 
    } 
} 
} 
<?php 
    $serverName = "SeverIP"; //serverName\instanceName, portNumber (default is 1433) 
    $connectionInfo = array("Database"=>"DatabaseName", "UID"=>"Username", "PWD"=>"Password 
    $conn = sqlsrv_connect($serverName, $connectionInfo); 
    $service = $_GET['service']; 

    if ($conn) 
    { 
    //echo "Connection established.<br />"; 
    } 
    else 
    { 
    echo "Connection could not be established.<br />"; 
    die(print_r(sqlsrv_errors(), true)); 
    } 

    $sql = ("SELECT DefaultContact2 FROM tblServices WHERE ServiceName = '$service'"); 
    $stmt = sqlsrv_query($conn, $sql); 

    if ($stmt === false) 
    { 
    die(print_r(sqlsrv_errors(), true)); 
    } 
    while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) 
    { 
    $dC2 = $row['DefaultContact2']; 
    } 
    echo json_encode ($dC2); 
    sqlsrv_free_stmt($stmt);    
?> 

任意の助けいただければ幸いです。

+2

PHPにJavaScript変数を送信するには、多くのQ&Aがあります。例えば:http://stackoverflow.com/questions/1917576/how-to-pass-javascript-variables-to-php – trincot

+0

元々GETリクエストをしたときに '$。post 'を試しても動作しないことに注意してください – adeneo

+0

**警告**あなたのPHPコードはSQLインジェクションの影響を受けやすいです。 'sqlsrv_query(" Select DefaultContact2 FROM tblServices WHERE ServiceName =? "、array($ service));' – jcaron

答えて

0

あなたのAjaxリクエストを使用してデータを送信することができます。

<?php 
print_r($_POST); 

/* 
[ 
    "name" => "John", 
    "location" => "Boston" 
] 
*/ 
?> 
0

あなたが同じページ上のPHPにはJavaScriptの変数を渡すことはできません。そして、PHPで

$.ajax({ 
    url: "http://IP/development/Query01.php", 
    method: "POST" // send as POST, you could also use GET or PUT, 
    data: { name: "John", location: "Boston" } 
    dataType: "json", 
    success: function(data) { 
     editors['Contact2'].setValue(data); 
    } 
}); 

は、送信されたデータにアクセスします。

POSTまたはGETメソッドを使用してajax呼び出しでこれを行うことができます。操作したデータをブラウザに送り返し、javascriptのオブジェクトまたは変数に格納することができます。

+0

私は彼がその逆を求めていると思う。 – TheTom

+0

うんうん。撮影ポイント: - D – DarkBee

0

1回のAjaxコールで実行できます。

あなたのコードからこの行削除:

window.location.href = "http://IP/development/Query01.php?service=" + a; 

をそしてAjax呼び出し

$.ajax({ 
     type: 'GET' 
     data : { 
      service: sender.getValue(); 
     }, 
     url: "http://IP/development/Query01.php", 
     dataType: "json", //the return type data is jsonn 
     success: function(data){ // <--- (data) is in json format 
      editors['Contact2'].setValue(data); 
      //alert(data); 
      //parse the json data 
     } 
}); 

ビットを変更し、私はAjaxの呼び出しで取得のために同じ変数名を置きます。しかし、あなたのquery01.phpが同じ呼び出しで両方のアクションを行うことを今受け入れるべきかどうかはわかりません。

0

ご協力いただきありがとうございます。ちょうどそれが正しい方法であるかどうかに関係なく、私が最後に行ったことを投稿した場合、それは役に立つと思った、それは確かに仕事をした。

// If the user changes the ServiceID field. 
if (sender.getFieldName() == 'ServiceID') 

{  
    // Variable Declaration 
    serviceName = sender.getValue(); 

    { 
     // Use JQuery.Ajax to send a variable to the php file, and return the result. 
     $.ajax({ 
     // Access the PHP file and save the serviceName variable in the URL, to allow the $_GET.. 
     // method to access the javascript variable to apply it within the SQL Query. 
     url: "http://ServerName/development/DefaultContact1.php?service=" + serviceName, 
     // retrieve the result, using json. 
     dataType: "json", // the return type data is jsonn 
     success: function(data)// <--- (data) is in json format 
        { 
        // pre-fill the contact1 field with the result of the PHP file. 
        editors['Contact1'].setValue(data); 
        } 
      // End of Ajax Query  
      }); 
    // End of function to prefill Contact1 field. 

ご回答いただきありがとうございます。

関連する問題