繁体   English   中英

如何使用ajax onclick将变量传递给另一个php文件

[英]How to pass variable to a another php file using ajax onclick

我如何在单击时将使用ajax的不同id传递给不同的php文件,以便可以将其用于mysql查询。 我已经使用过会话,但是由于我正在使用while语句来创建分区,因此在使用会话时,它仅传递了最后一个div的值。

$("button").click(function(){
    var yourid = "some id";
    $.post("your_file.php", {data: yourid}, function(result){
        $("span").html(result);
    });
});

下次尝试一些Google ... http://www.w3schools.com/jquery/ajax_post.asp

与jQuery

    $.ajax({
    type:"POST",
    url:"r_pdf_BioChem.php?q="+<?php echo $PHPVAR1 ?>+"&q1="+<?php echo $PHPVAR2;?>
    .
    .

或在ONCLICK函数中传递HTML元素的值

用于JAVASCRIPT

HTML

<input type='button' name='btn1' id='btn1' value='Proceed' onclick='onclick_fun_for_ajax(ele1.value,ele2.value);'>

JAVASCRIPT

    function onclick_fun_for_ajax(nmbr,year)
    {


        xmlHttp=GetXmlHttpObject();
        if ( xmlHttp == null )
        {
                alert ("Browser does not support HTTP Request");
                return;
        }

        var url="target_php.php";
            url=url+"?q="+nmbr;
            url=url+"&q1="+year;
            url=url+"&sid="+Math.random();

        xmlHttp.onreadystatechange=stateChanged;

        xmlHttp.open("POST",url,true);
        xmlHttp.send(null);
    }
    function stateChanged()
    {
            var zdivid="fetched_result";
            if ( xmlHttp.readyState==4 || xmlHttp.readyState=="complete" )
            {
                    document.getElementById(zdivid).innerHTML=xmlHttp.responseText;
            }
    }
    function GetXmlHttpObject()
    {
            var xmlHttp=null;
            try
            {
                    //Firefox, Opera 8.0+, Safari
                    xmlHttp=new XMLHttpRequest();
            }
            catch (e)
            {
                    //Internet Explorer
                    try
                    {
                            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
                    }
                    catch (e)
                    {
                            xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                    }
            }
            return xmlHttp;
    }

像这样:

// Init click event
$('#your_button').click(function(e) {
      e.preventDefault();             
      save(); // Function that sends the ajax request
  });
function save() {
    var myvar1 = $('div#select_your_datas'),
        myvar2 = $('div#select_your_datas2');
    $.ajax({
            url: 'path/to/php.php', // File that does sql stuff
            type: 'POST',
            data: { myvar1: myvar1, // Before colon is the object property. After the colon is the value
                    myvar2: myvar2 
                   },
            success:function(dataFromAjaxResponse, typeFromAjaxResponse) { 
                alert('ajax success');

            },
            error: function(dataFromAjaxResponse) {
                alert('ajax error');
                console.log(dataFromAjaxResponse);
            }
        });
}
<?php
$myvar1 = $_POST['myvar1'];
$myvar2 = $_POST['myvar2'];
// Do your SQL stuff

基本上,您想要的是一个处理请求的PHP脚本。 像这样:

// Search.php
$id         = ( isset( $_GET['id'] ) ? $_GET['id'] : null );
$response   = array();

if( !is_null( $id ) && is_numeric( $id ) )
{
        $query = $db->prepare('SELECT * FROM users WHERE id = :id');
        $query->execute( array( "id" => $id ) );

        $response["Error"] = false;
        $response["Users"] = $query->fetchAll();

} else {
    $response["Error"] = true;
    $response["Message"] = "No Id specified or id not numeric.";
}

print json_encode( $response );

在客户端代码上,您希望将ajax放在哪里,您将需要一个表单和一个JavaScript方法来处理该表单,并将其异步发送到Search.php脚本。 一个例子可能是

// SearchForm.php
<form>
    <input type="text" id="IdInput" /> <input type="button" id="searchButton" />
</form>

<script type="text/javascript">
    $(function()
    {
        $('#searchButton').click(function()
        {
            var query = $('#IdInput').val();

            $.getJSON('/Search.php?id=' + query, function(response)
            {
                if( response.Error == false )
                {
                    console.log( response.Users );
                } else {
                    alert( response.Message );
                }
            });

        });
    });
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM