2016-05-04 66 views
2

私は、ajaxを使って値のデータベースを検索し、ドロップリストを作成しています。これは私のアヤックスコードです:ajax経由で2番目の値をPHPに送る方法

function searchq6(){ 
    var searchstate = $("input[name='region']").val(); 
    var searchTxt = $("input[name='suburb']").val(); 
    $.post("search-suburb.php", {searchVal: searchTxt, st:searchstate}) 
    .done(function(sbb) { 
     $("#sbb").html(sbb); 
    }); 
} 

ここでは、ユーザー入力領域を取得し、その領域の郊外をdbで検索しています。これは私のPHPコードです:私は何をしたいか

$output = '' ; 
if (isset($_POST['searchVal'])){ 
$searchq = $_POST['searchVal']; 
$st = $_POST['st']; 
$query = mysqli_query($link, "SELECT DISTINCT title FROM `wp_locations` WHERE state='".$st."' AND `title` LIKE '%".$searchq."%' LIMIT 10")or  die("Could not search!"); 
if (!mysqli_query($link,$query)) 
{ 
     echo("Error description: " . mysqli_error($link)); 
} 
$count = mysqli_num_rows($query); 
if($count == 0){ 
    $output = '<option>No results!</option>'; 
}else{ 
while($row = mysqli_fetch_array($query)){ 
    $suburb = $row['title']; 
    $postcode = $row['postcode']; 

?> 
    <option value="<?php echo $suburb; ?>"><?php echo $suburb; ?> </option> 
<?php 
} // while 
} // else 
} // main if 

は、異なる入力ボックスにpostcode値を送信すること、です。これは私のhtmlの外観です

Suburb:* <input type="text" name="suburb" list="sbb" required size="30" value="<?php echo $suburb; ?>" onkeyup="searchq6()" id="output"> 
     <datalist id="sbb" name="taskoption6" > 
       <option> </option> 
     </datalist> 
Postcode:* <input type="number" name="postcode" required value="<?php echo $postcode; ?>" id="postcode"> 

$("#postcode").html(postcode);は単に動作しません。どのようにPHPファイルから値を送信するのですか?

+0

一つの二重引用符、 ' "'最後のコードスニペットの最後の行にある –

+0

@MedetAhmetsonAtabayev、それはタイプミスです。今質問で修正しました –

+0

phpの結果としてjsonを送ってみませんか? – Abhishek

答えて

0

3つの値を持つ配列を作成するだけです。 1.成功true/false 2.データが成功した場合はtrue、失敗した場合はnull null 3.成功値がfalseのエラー理由。

だから、あなたのエラー結果の一つは次のようになります。

$result = ['success' => false, 'data' => null, 'error' => 'error connecting db']; 

そして、あなたの成功の結果は次のようになります。

$result = ['success'=> true, 'data'=> ['suburbs'=> $suburbs, 'pincode' => $pincode], 'error' => null]; 

は今、JSONとして、この結果の配列を送信します。

echo json_encode($result); 

次に、Json in jqueryを解析して、どこにあるのか再検討します。 PHPファイルで

+0

が、私はこの形式を使用する必要がありますか欲しいものです:。 '$アヤックス({ データ型:「JSON」、 URL: url、 データ:データ、 成功:s uccess }); ' 、または私は同じAjax関数を使用できますか? –

+0

@ YohanBlakeあなたは同じ機能を使用することができます。それは、応答の形式をインテリジェントに推測します。 – Abhishek

+0

しかし私の場合は値を返すときに、

0

:AJAXで

// Output is array, will be send as JSON data 
$output = array("suburbs"=>'', "postcodes"=>array()); 

if (isset($_POST['searchVal'])){ 
    $searchq = $_POST['searchVal']; 
    $st = $_POST['st']; 
    $query = mysqli_query($link, "SELECT DISTINCT title FROM `wp_locations`  WHERE state='".$st."' AND `title` LIKE '%".$searchq."%'  LIMIT 10")or  die("Could not search!"); 
    if (!mysqli_query($link,$query)) { 
     echo("Error description: " . mysqli_error($link)); 
    } 
    $count = mysqli_num_rows($query); 
    if($count == 0){ 
     $output["suburbs"] = '<option>No results!</option>'; 
    }else{ 
     while($row = mysqli_fetch_array($query)){ 
      $suburb = $row['title']; 
      $postcode = $row['postcode']; 
      $output["suburbs"] .= "<option value=\"$suburb\">$suburb </option>"; 
      $output["postcodes"][$suburb] = $postcode; 
     } // while 
    } // else 
    // Send result 
    echo json_encode($output); 
} // main if 

HTMLの一部:HTMLで

// Make global variable that holds POSTCODES: 
var postcodes = {}; 
function searchq6(){ 
    var searchstate = $("input[name='region']").val(); 
    var searchTxt = $("input[name='suburb']").val(); 
    $.post("search-suburb.php", {searchVal: searchTxt, st:searchstate}) 
    .done(function(response) { 
     var responseObj = jQuery.parseJSON(response); 
     $("#sbb").html(responseObj["suburbs"]); 
     postcodes = responseObj["postcodes"]; 
    }); 
} 

Suburb:* <input type="text" onselect="change_post(this)" onchange="change_post(this)" name="suburb" list="sbb" required size="30" value="<?php echo $suburb; ?>" onkeyup="searchq6()" id="output"> 
    <datalist id="sbb" name="taskoption6" > 
      <option> </option> 
    </datalist> 
Postcode:* <input type="number" name="postcode" required value="<?php echo $postcode; ?>" id="postcode"> 
<script> 
     //var postcodes = { "1":"First", "2":"Second", "3":"Third", "4":"Fourth" }; 
     function change_post(out) { 
      //console.log(postcodes[ out.value ]!=undefined); 
      if (postcodes[ out.value ]!=undefined) 
       document.getElementById("postcode").innerHTML = postcodes[ out.value ]; 
     } 
</script> 
+0

コンソールで 'Uncaught SyntaxError:Unexpected token E'を取得しました –

+0

.done()イベント関数の中に' console.log(response); 'を追加して、ここに何を表示できますか? –

+0

'エラーコード:{"郊外 ":" <オプション値= \ "FOOTSCRAY \"> FOOTSCRAY <\/option><オプション値= \ "WEST FOOTSCRAY \"> WEST FOOTSCRAY <\/option> "、" postcodes ":{" FOOTSCRAY " "WEST FOOTSCRAY":null}} ' –

関連する問題