php
  • jquery
  • ajax
  • parameter-passing
  • 2012-08-31 107 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(); –

    相关问题