2016-05-17 1 views
1

私はこの問題を数時間(多分数日)費やしました。私はこの質問が以前に尋ねられたことを知っていますが、答えは私の初心者の経験レベルではあまりにも曖昧です。私はいくつかの特定の単純なコードの例を愛するだろう。jquery AJAXを使用してページからいくつかの変数をコールバックする方法

私はchangeDate.phpへのAJAX呼び出しを送信しています。

index.htmlを

$(document).on("click", "#day-left", function(event){ 
    changeDate = changeDate - 1; 

    $.ajax({ 
      type: "POST", 
      url: "changeDate.php", 
      data: { 
       amount: changeDate, 
       loginName: "benjamin_lawson" 
      }, 

      success: function(data) { 
      $("#date").html(data); 
      } 
     }); 
    }); 

このページでは、Ajaxを受けます。データを使用して、SQLを更新し、24個の変数($ hour1、$ hour2、$ hour3 ...)をデータとともに作成します。

changeDate.php私は変数名と変数データを保持し、コールバックに戻って私の最初のページにこれらの変数を渡すことができますどのように

<?php 
$amount = $_POST['amount']; 
$user = $_POST['loginName']; 
//server information variables 

$dateName = date("mdY", strtotime("+" . $amount . " day")); 


$conn = new mysqli($servername, $username, $password, $dbname); 

for ($x = 1; $x <= 24; $x++) { 
    $sql = "SELECT `$dateName` FROM `$user` WHERE hour='$x'"; 
    $result = $conn->query($sql); 

    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      ${"hour" . $x} = $row[$dateName]; 
     } 
    } 
    } 
//this creates 24 variables with all my information I want sent 
//through my call back. ($hour1, $hour2, $hour3,...) 

私はこれに関連した質問を参照し、彼らは答えた:)あなたは(json_encodeで任意に多くの変数を返すことができ

潜在的なソリューション...

関連質問と回答。あなたのPHPで

試してみてください。あなたのJSで

<?php 
echo json_encode(array($num1, $num2)); 
?> 
You can add to that array , $num3, $num4, ... and so on. 

次のように、あなたはそれぞれの番号にアクセスすることができます。

まず、コード化されたJSON文字列を解析するには、このコード行が必要です。>>成功関数。

var result = $ .parseJSON(出力);

結果はJSONオブジェクトとして設定されます。誰かが私を見ることができる場合、私は本当に感謝PHP

の$ NUM2 - PHP 結果の$ NUM1 [1] -

結果[0]:今、あなたは>結果内のすべてのフィールドにアクセスすることができます私はこの作業をするために何をする必要がありますか?どうもありがとうございます!

答えて

0

にあなたの全体のデータを得るでしょう、あなたのsuccess: function(data)

success: function(data) { 
     console.log(data); 
     } 

でこの配列を使用することができますPHPのエンコードそして、あなたは別の答えが必要でしたが、theresはすでにそれについての質問が存在しています。

まあ、phpから、あなたが望むデータを返すことができます。いずれかの文字列、または直接HTMLやxmlやJSONのようなフォーマットされたデータを与えることができます。

その要求からエコー/プリントされたものはすべて応答です。そのリクエストはURLまたはAJAXから直接行うことができます。要求が前提条件を満たす場合、同じ応答が表示されます。

データをエコーし​​ただけではJSは構造体がありません。フォーマットして解析して意味のあるデータを抽出する必要があるでしょう。

しかし、JSONとXMLは、既知のデータ転送言語です。 XMLは優れていますが、クライアントサイドでサーバベースおよびエレメントベースの検索で構造化する必要があります(XMLのファンではないので、私にはわからない多くの効率的な方法があります)。 JSONの場合、サーバー側でメソッドのエンコードとデコードを行い、JavaScriptはそれに対する兄のようなものです。

JSONはどのように形成されますか?配列またはオブジェクトをjson_encodeに渡すだけで、JSON文字列が返されます。 echoその文字列とあなたの応答は準備ができています。

私は@ Poonamのコードを使用します。私はまた、いくつかの最適化を作っています:

$amount = $_POST['amount']; 
$user = $_POST['loginName']; 

//server information variables 
$dateName = date("mdY", strtotime("+" . $amount . " day")); 

$conn = new mysqli($servername, $username, $password, $dbname); 

for ($x = 1; $x <= 24; $x++) { 

} 

// fill an array from 1 to 24 with steps of 1 
// http://php.net/manual/en/function.range.php 
$x = range(1, 24, 1); 

$sql = "SELECT `$dateName`, hour FROM `$user` WHERE hour IN ('". implode("', '", $x) ."')"; 
$result = $conn->query($sql); 
$response_arr = array(); 

if ($result->num_rows > 0) { 
    while($row = $result->fetch_assoc()) { 
     $response_arr['hour' . $row->hour] = $row[$dateName]; 
    } 
} 

echo json_encode($response_arr); 
exit(0); 
//this creates 24 variables with all my information I want sent 

そしてAJAXの成功コールバックで、コンテンツタイプはapplication/jsonとして言及されていない場合JSON.parse()のいずれかを使用します。

+0

ありがとうございました。これは従うのが簡単で、魅力のように働きました! –

0

ここでは、jsonを使用してデータをエンコードします。

$.ajax({ 
     type:"POST", 
     async: false, 
     url:"finance/getdataq", 
     dataType: "json", 
     data: data,  
     success: function(data){ 
// you can access your data variables like data['ukeydt']; 
     $("."+targetval).find('.qrwordfol').html(data['ukeydt']); 
     $("."+targetval).find('img').attr('src',data['ukeyqr']); 
     $("."+targetval).show(); 
     return false; 
     }, 
     error: function (data) { 
      getd=""; 
     } 
    }); 

と私のPHPコード

public function getdataq() 
    { 
     $data = array(); 
    $data['ukeydt'] = "this is first"; 
    $data['ukeyqr'] = "this is second"; 
    echo json_encode($data); 
    exit(); 

    } 
+0

ご意見ありがとうございますが、これは正直言って私を混乱させます。私がやろうとしていることを使って、とても簡単な例を私に見せてもらえますか?単純な変数名($ hour1、$ hour2)をインポートしてから、AJAXという名前の場所に戻します。 –

+0

すべての値を配列に格納してから、この配列をエンコードしてjquery ajax関数に返してからjqueryにアクセスする必要があります。 – shubham715

0

にあなたは時間のすべての値を持つことになり、配列を使用することができます。

変更日。PHP

$amount = $_POST['amount']; 
$user = $_POST['loginName']; 
//server information variables 

$dateName = date("mdY", strtotime("+" . $amount . " day")); 


$conn = new mysqli($servername, $username, $password, $dbname); 

for ($x = 1; $x <= 24; $x++) { 
    $sql = "SELECT `$dateName` FROM `$user` WHERE hour='$x'"; 
    $result = $conn->query($sql); 
    $response_arr = array(); 

    if ($result->num_rows > 0) { 
     while($row = $result->fetch_assoc()) { 
      $response_arr['hour' . $x] = $row[$dateName]; 
     } 
    } 
    } 


echo json_encode($response_arr); 
    exit(); 
    //this creates 24 variables with all my information I want sent 
    //through my call back. ($hour1, $hour2, $hour3,...) 

この$response_arr$response_arr['hour1']...$response_arr['hour24']を持つことになりますし、あなたはあなたがすべての答えはJSONを使用するように言っているまあdata

+0

偉大な答え、ありがとう!だから私は今私のデータを正しく配列にインデックスに戻ってエコーされている。このデータを今、どのように使用してhour1、hour2変数にそれらを分けることができるのかを私に説明してください。 –

+0

'var hour1 = data ['hour1']; var hour2 = data ['hour2']; 'など。これは正常に動作します。 – Poonam

関連する問題