0

我试图将更改下拉列表的值发送到 php 脚本。但是以我解决问题的方式,表单和状态字符串被发布了两次。一次带有 GET 参数集,另一次没有。我不知道如何解决,但也许你比我聪明。

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.easing.1.3.js"></script>
<script type="text/javascript" src="js/jquery.ennui.contentslider.js"></script>
<script type="text/javascript">
function showUser()
{
var users = document.getElementById('users').value;

if (users=="" )
{
document.getElementById("pictab").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","slider.php?users="+users,true);
xmlhttp.send();
xmlhttp.reload();
}

<?php 
//.............
//..............
//.............
//..............
$soso = mysql_num_rows($connn3);
for($i=0;$i<$soso;$i++)
{
echo "
$(function() {
$('#one$i').ContentSlider({
width : '280px',
height : '180px',
speed : 400,
easing : 'easeOutQuad'
});
});";
}
?>

</script>
<!-- Site JavaScript -->
<form>
<select id="users" name="users" onChange="showUser()" >
<option value="bikes">Bikes</option>
<option value="zub">Stuff/option>
<option value="sonst">Other</option>

</select>
</form>
<br>
<div id="txtHint"></div>
<?php 


if(isset($_GET['users'])){
echo "<h2>Q posted</h2>";
$q = $_GET['users'];
echo $q;
//DB QUERY WITH Q

}elseif(!isset($q)){
echo "KEIN Q GEPOSTET";
// DB QUERY WITHOUT Q
}
?>
4

4 回答 4

4

您已将 Jquery 包含到您的项目中,因此请使用它的功能。主要是Jquery Ajax来处理 Ajax 请求。

$(function (){ //document is loaded so we can bind events

  $("#users").change(function (){ //change event for select
     $.ajax({  //ajax call
        type: "POST",      //method == POST 
        url: "slider.php", //url to be called
       data: { users:  $("#users option:selected").val()} //data to be send 
     }).done(function( msg ) { //called when request is successful msg
       //do something with msg which is response
             $("#txtHint").html(msg); //this line will put the response to item with id `#txtHint`.
     });
   });
 });

代码的 php 部分应该在slider.php中。此外,在示例中我使用POST但如果您想要GET只需更改type: "GET". 在 script.php 中获取它的价值使用:

$_POST['users'];或者,如果您将类型更改为 GET,那么$_GET['users']您也可以使用$_REQUEST['users']处理 POST、GET、COOKIE 的类型。

于 2013-07-02T10:05:58.160 回答
0
var name=document.forms["myform"]["user"].value;
$.ajax({
type: "POST",
url: "yourpagenmae.php",
data: { name: user }
    ,
    success: function(msg) {
       // alert(msg);

    }
});

希望对你有帮助

于 2013-07-02T10:14:12.793 回答
0

我认为这是因为您实际上打了 2 个电话。一个在 Javascript 中到 PHP 文件,另一个是你的回显,无论设置什么。我会发表评论,但还没有足够的果汁。

尝试回显 $_GET 并查看您在通话之前和通话后的实际设置。从那里您可能能够看到实际发生的情况。我希望这有助于指导您朝着正确的方向前进。

于 2013-07-02T10:04:48.583 回答
-1

//查看文件

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    //use jquery get method
    $('#users').change(function() {
        //get the user value
        var user = $('#users').val();

        $.getJSON( "http://localhost/test.php?users="+user, function( data1 ) {

            console.log(data1);

            //status
            if (data1.status) {
                alert(data1.q);

                //whatever response variable key
                $('#txtHint').html(data1.q)
            } else {
                alert('error'+data1.q);
            }
        });
  });
});
</script>
<!-- Site JavaScript -->
<form>
    <select id="users" name="users" >
    <option value="bikes">Bikes</option>
    <option value="zub">Stuff</option>
    <option value="sonst">Other</option>
</select>
</form>
<br>

<div id="txtHint"></div>

//test.php文件

<?php 

$data = array();

if(isset($_GET['users'])){
//echo "<h2>Q posted</h2>";
$q = $_GET['users'];

$data['status'] = true;
$data['q'] = $q;


}elseif(!isset($q)){

$data['status'] = false;
$data['q'] = 'KEIN Q GEPOSTET';

}

header('Content-type:application/json');
//json response
echo json_encode($data);

?>
于 2013-07-02T10:16:06.193 回答