php
  • jquery
  • ajax
  • parameter-passing
  • 2012-08-31 158 views 0 likes 
    0

    我使用jQuery和ajax調用了一個php頁面res.php。該代碼是: -獲取由ajax函數調用的php頁面的參數

    $('#submit_button').click(function() {   
        buildingVal = $("#building"); 
        levelVal = $("#level"); 
        data = 'building=' + buildingVal.val() + 'level=' + levelVal.val(); 
        $.ajax({ 
    
         url: "res.php", 
         type: "POST", 
         data: data,  
         success: function (data) { 
          $('#npc').html(data); 
         } 
        });​ 
    }); 
    

    的res.php頁面代碼: -

    <?php 
    //connect to the database 
    $con = mysql_connect("localhost","root","12345") or die("error ".mysql_error()); 
    
    //connect to the travian table 
    mysql_select_db("trav",$con) or die("error ".mysql_error()); 
    
    $building = mysql_real_escape_string($_GET['building']); 
    $level = mysql_real_escape_string($_GET['level']); 
    
    
    $query = "select * from "; 
    $query = $query . $building; 
    $query = $query . "where lvl=" . $level; 
    $query = $query . ";"; 
    $result = mysql_query($query) or die('Error in Child Table!'); 
    
    $data = mysql_fetch_assoc($result); 
    
    echo '<table><tr><td>Lumber=$data["lumber"]</td><td>Clay=$data["clay"]</td><td>Iron=$data["iron"]</td><td>Crop=$data["crop"]</td>'; 
    
    ?> 
    

    我收到錯誤

    Notice: Undefined index: building in C:\xampp\htdocs\debal\res.php on line 8 
    
    Notice: Undefined index: level in C:\xampp\htdocs\debal\res.php on line 9 
    Error in Child Table! 
    

    我怎樣提取兩個是那樣的參數發送到頁面並在sql查詢中使用它們從數據庫中的表中檢索數據。 請你能幫助我..

    +1

    在你的ajax函數中,試試:'data:{building:buildingVal.val(),level:levelVal.val()},或者至少將你使用&符號的查詢字符串分開。而你在弄明白後得到。 – adeneo

    +0

    如果你正在做一個帖子的格式應該是這樣的data = {building:buildingVal.val()+ level:levelVal.val();} – Ashirvad

    +0

    @AshirvadSingh - 對象和字符串都是有效的數據,前者是通常更具可讀性。 – adeneo

    回答

    4

    問題是你通過AJAX發送$ _POST值,並嘗試從你的res.php頁面上的$ _GET分配變量。改變任何AJAX功能type: "GET",或

    $building = mysql_real_escape_string($_POST['building']); 
    $level = mysql_real_escape_string($_POST['level']); 
    
    上res.php

    還你沒有正確發送 '等級' 變量

    ,你錯過了一個 '&'

    data = 'building=' + buildingVal.val() + '&level=' + levelVal.val(); 
    
    +0

    我將代碼改爲$ _POST,第一部分的錯誤似乎已經解決了,但第二部分仍然存在。 '注意:未定義的索引:第9行的C:\ xampp \ htdocs \ debal \ res.php中的級別 子表錯誤!' 看起來第二個參數沒有被檢索到。我如何檢索這兩個參數。 – debal

    +0

    +1:你是對的,但我不知道這個錯誤是否來自它... – synack

    +1

    在'level'之前添加'&'像這樣:data ='building ='+ buildingVal.val()+' &level ='+ levelVal.val(); –

    相關問題