0

我已经制作了数组$latent_weights_array,当我按下“保存”按钮以通过 ajax 运行 php 脚本时,我希望将它们作为 $_GET 变量传递。

在 PHP 中

<?php
    echo "<input type='button' class='btn'
             onclick='ajaxWeight(".json_encode($latent_weights_array).")' value='Save'/>";
?>  

在javascript中

function ajaxWeight(latentweights){
    // trim code here

    var queryString = "?latentweights=" + latentweights;

    ajaxRequest.open("GET", "031instsql.php" + 
                              queryString, true);
    ajaxRequest.send(null);
}

在 031instsql.php

<?php
     if (isset($_GET['latentweights'])){
         echo $_GET['latentweights'];
         $kati=array();
         $kati=json_decode($_GET['latentweights'],true);
     }
?>

1.为什么似乎不起作用?2.这里需要做什么?

4

3 回答 3

0

json_encode为数组定义生成有效的 JavaScript 代码,因此您将数组传递给ajaxWeight. 在它里面你试图将它与一个字符串连接起来,但是 JavaScript 不会为你做任何 jsonification。查看如何在 JS 中制作 JSON 字符串,或者如果您不需要实际的 JS 对象对其执行任何操作,您可以在 php 端对其进行双重编码:

json_encode(json_encode($latent_weights_array))

这样,您将传递ajaxWeight可以连接到您的 URL 的字符串。

于 2013-06-23T10:58:19.003 回答
0

看起来你的 JavaScript ajax 调用应该是这样的:

function ajaxWeight(latentweights){
    // trim code here

   xmlhttp.onreadystatechange=function()
   {
    if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
      // Deal with response
    }
  }

    var queryString = "?latentweights=" + latentweights;

    xmlhttp.open("GET", "031instsql.php" + queryString, true);
    xmlhttp.send();
}

或者更好的是,使用 jQuery

$.getJSON({
      url: "031instsql.php",
      {latentweights: latentweights})
.done(function(result){
 // Deal with result
 })
.fail(function( jqxhr, textStatus, errorResponse) {
    var error = textStatus + ', ' + errorResponse;
    console.log( "Request Failed: " + errorResponse);
 });

我认为您还需要呈现$kati来自 PHP 的响应。

于 2013-06-23T11:01:35.863 回答
0

您可以使用jQuery. 试试这个

<?php
    $latent_weights_array = array(1,2,3);
    echo '<input type="button" class="btn" onclick="ajaxWeight('.json_encode($latent_weights_array).')" value="Save"/>';
?> 


<script type="text/javascript">
    function ajaxWeight(latentweights){
        $.ajax({
            type: "GET",
            url: "031instsql.php",
            data: 'latentweights='+latentweights,
            success: function(html){
                alert(html);
            }
       });
    }
</script>

有关jQuery AJAX 阅读此内容的更多信息

于 2013-06-23T11:06:29.820 回答