0

複数の条件でJqueryAjax検索を実行しようとしていますが、これが初めてです。私はいくつかの調査を行い、データをphpファイルに送信する方法を見つけましたが、変数は1つだけです。6つの変数すべてをに実装する方法がわかりませんdata: data

はい、どうぞ:

var FromDate
var ToDate
var MusicStyles
var Locations
var FromPrice
var ToPrice

今ここで私は行き詰まりました、私はいくつかのデータで投稿をする必要があります。複数の変数がある場合、できますdata: dataFromDate, dataToDate, dataMusicStyles,か?

$("#SearchButton").click(function() {

var dataFromDate            = 'dataFromDate='+ FromDate;
var dataToDate              = 'dataToDate='+ ToDate;
var dataMusicStyles         = 'dataMusicStyles='+ MusicStyles;
var dataLocations           = 'dataLocations='+ Locations;
var dataFromPrice           = 'dataFromPrice='+ FromPrice;
var dataToPrice             = 'dataToPrice='+ ToPrice;


            $.ajax({
                type: "POST",
                url: "do_search.php",
                data: dataFromDate, dataToDate, dataMusicStyles, dataLocations, dataFromPrice, dataToPrice,
                beforeSend: function(html) { // this happens before actual call
                    $("#results").html('');
                    $("#searchresults").show();
                    $(".word").html(searchString);
               },
               success: function(html){ // this happens after we get results
                    $("#results").show();
                    $("#results").append(html);
              }
            });   
});

MySQLは次のようになります。

<?php
//if we got something through $_POST
if (isset($_POST['dataFromDate'])) {
    include('db.php');
    $db = new db();
    // never trust what user wrote! We must ALWAYS sanitize user input
    $word = mysql_real_escape_string($_POST['search']);
    $word = htmlentities($word);
    // build your search query to the database

    $sql = "SELECT
    events.ID,
    events.EVENT_NAME,
    events.start_datetime,
    events.end_datetime,
    events.VENUE_LOCATION,
    events.ENTRANCE_PRICE, 
    venues.VENUE_NAME,
    GROUP_CONCAT(music_styles.MUSIC_STYLE_NAME) AS MUSIC_STYLE_NAME
    FROM events
    INNER JOIN venues 
    ON events.VENUE_LOCATION = venues.ID
    INNER JOIN events_music_styles
    ON events.ID = events_music_styles.event_id
    INNER JOIN music_styles
    ON events_music_styles.music_style_id = music_styles.id
    WHERE start_datetime >= '$phpFromDate'
    AND end_datetime <= '$phpToDate' 
    AND ENTRANCE_PRICE >= '$phpFromPrice'
    AND ENTRANCE_PRICE <= '$phpToPrice' 
    GROUP BY events.ID";

    // get results
    $row = $db->select_list($sql);
    if(count($row)) {
        $end_result = '';
        foreach($row as $r) {
            $result         = $r['title'];
            // we will use this to bold the search word in result
            $bold           = '<span class="found">' . $word . '</span>';   
            $end_result     .= '<li>' . str_ireplace($word, $bold, $result) . '</li>';           
        }
        echo $end_result;
    } else {
        echo '<li>No results found</li>';
    }
}
?>

私はそれがこのように機能しないことを100%確信していますが、私はそれをほぼ正しく理解したと思います。誰かが少なくともコードを修正するために私ができることを教えてくれたら、私はそれが大好きです。

ありがとう!

4

2 に答える 2

3

次のように、オブジェクトとして送信します。

$.ajax({
    type: "POST",
    url: "do_search.php",
    data: {dataFromDate    : FromDate,
           dataToDate      : ToDate,
           dataMusicStyles : MusicStyles,
           dataLocations   : Locations,
           dataFromPrice   : FromPrice,
           dataToPrice     : ToPrice
    },
    beforeSend: function(html) { // this happens before actual call
        $("#results").html('');
        $("#searchresults").show();
        $(".word").html(searchString);
    },
    success: function(html) { // this happens after we get results
        $("#results").show();
        $("#results").append(html);
    }
});​

ここで、最初の値がキーで、2番目の値が値であるため{key: value}、サーバー上でとしてアクセスされます$_POST['key']。これにより、値は希望どおりにアクセスされます。

$_POST['dataFromDate']

また、最初にこれらすべての変数を必要とするわけではなく、オブジェクトで直接使用するだけです。

于 2012-12-16T20:06:06.173 に答える
0

文字列をa","で連結し、サーバー上で展開してみてください。

于 2012-12-16T20:07:00.280 に答える