2017-09-07 150 views
-2

我试图得到一个发送和接收ajax编码,但即时通讯错误,preco不是Complista2页面中的索引。这是代码:ajax - 发送和接收数据错误

起始页:

$(function() {  
     $("#b1").click(function() { 
      $.ajax({ 
       type: "POST", 
       url: "complista2.php", 
       data: $("#preco").val(),     
       success: $.get("complista2.php", function(data) { 
        $("#paramount").html(data); 
       }) 
      }); 
     }); 
    }); 

<input id="preco" type="text" name="preco" value='250 AND 500'><br><br> 

这是Complista2页:

<?php 

$username = "root"; 
$password = ""; 
$server = "localhost"; 
$database = "VRealidade"; 
$conn = mysqli_connect($server, $username, $password, $database); 
if (!$conn) { 
    die("Erro: " . mysqli_connect_error()); 
} else {  
    } 

$preco = $_GET['preco']; 
$sql = "SELECT * FROM computadores WHERE preco BETWEEN $preco"; 
$result = mysqli_query($conn, $sql); 
echo mysqli_error($conn); 
$row = mysqli_fetch_assoc($result); 
echo "<div class='entrada'>$row[nome]</div>"; 
while($row = mysqli_fetch_assoc($result)) { 
    echo "<div class='entrada'>$row[nome]</div>"; 
}  

?> 

编辑:这是形式,但它带着这个代码没有意义。

<form id="pesqmenu2" method='GET'> 
    <input id="preco" type="text" name="preco" value='250 AND 500'> 
</form> 
+0

是吗?您发送的唯一数据是一个值;没有理由期望它会是一个名为“preco”的参数,我可以看到它。 –

+0

eh,uhm ...'$ .get()'不会返回成功选项可以使用的函数。 –

+0

@Dave Newton @ Kevin B谢谢你的回答,伙计们。但可以提供一些解决方案的提示?即时通讯仍在学习,你知道。 – Adato

回答

0

我已经找到了解决办法。我所要做的就是在点击事件中添加这个内容:

$.post("Complista2.php/?preco="+$("#preco").val(), function(data) { 
     $("#paramount").html(data); 
}); 
1
<?php 

$username = "root"; 
$password = ""; 
$server = "localhost"; 
$database = "VRealidade"; 
$html = ""; 

//check if preco initialized, and filter for default and special chars as SQL injection ... 
if(isset($_POST['preco']) && filter_input(INPUT_POST, 'preco', FILTER_DEFAULT , FILTER_SANITIZE_SPECIAL_CHARS)) { 

    try { 
    $preco = $_POST['preco']; 
    $conn = mysqli_connect($server, $username, $password, $database); 

    if (mysqli_error()) { 
     $error = "MySQLi error " . mysqli_error() . ": " . mysqli_error() . "\n<br>When executing:<br>\n$query\n<br>"; 
     exit(); 
    } 


    $sql = "SELECT * FROM computadores WHERE preco BETWEEN $preco"; 
    $result = mysqli_query($conn, $sql); 
    $row = mysqli_fetch_assoc($result); 

    $html .= "<div class='entrada'>$row[nome]</div>"; 

    while ($row = mysqli_fetch_assoc($result)) { 
     $html .= "<div class='entrada'>$row[nome]</div>"; 
    } 

    //ouput html 
    header('Content-Type: application/json'); 
    echo json_encode($html); 

    } catch (Exception $e) { 
    echo 'Exception reçue : ', $e->getMessage(), "\n"; 
    } 
} 

你需要改变你的方式是你的问题是不要发送到页面.PHP

<form id="pesqmenu2" name="pesqmenu2" method="post"> 
    <input id="preco" type="text" name="preco" value='250 AND 500'> 
    <input type="submit" id="b1" name="b1" value="submit"/> 
</form> 

阿贾克斯改变:

$(function() { 
    $.ajax({ 
     method: "POST", 
     url: "complista2.php", 
     data: { preco: $("#preco").val() } 
    }) 
    .done(function(data) { 
     $("#paramount").html(data); 
    }); 
}); 
+0

它仍然给出preco是complista2中未定义的索引 – Adato

+0

并且警报给你任何错误?,控制台中的帖子状态为200?post变量存在于你显示的preco列表中? –

+0

该警报发出“250 AND 500”,该变量存在于数据库中,问题在于它的preco没有达到complista2 – Adato