-2

我知道在 SO 和网络上有相当多的条目,但是我无法开始工作 - 任何帮助将不胜感激。

所以我在 Javascript 中有一个数组,我试图将它传递给 PHP。

我有一个小的 JS 函数来首先发布它,所以:

function sendToPHP() {
$.post("index.php", { "variable": toSearchArray });
}

然后在页面下方,我有 PHP:

<?php 
    $myval = $_POST['variable'];
    print_r ($myval);
    ?>

*印刷品就在那里供我检查。

任何想法 - 仅供参考,我使用的是 MAMP,所以它的 localhost:8888/index.php。这是否会导致 URL 不正确的问题?

谢谢。

4

4 回答 4

3

您对 ajax 的工作原理有误解。尽管 jquery 使它变得容易,但它仍然不是自动的。你应该只用 jquery 找到一个关于 ajax 的教程,但是如果你只想将一个数组发送到 php 并在屏幕上查看输出,这样的事情会起作用:

索引.php

<html>
<head>
<title>Test</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    //attach to the button a click event
    $('#btn').click(function(){
            //get the value from the textbox
        var txt=$('#txt').val();
            //if txt is blank, alert an error
        if(txt == ''){
            alert("Enter some text");
        } else {
                    //send txt to the server
                    //notice the function at the end. this gets called after the data has been sent
            $.post('catcher.php', {'text':txt}, function(data){
                            //now data is an object, so put the message in the div
                $('#response').text(data.message);
            }, 'json');
        }
    });
});
</script>
</head>
<body>
<input type="text" id="txt">
<input type="button" id="btn">
<pre id="response" style="overflow:auto;width:800px;height:600px;margin:0 auto;border:1px solid black;">&nbsp;</pre>
</body>
</html>

捕手.php:

<?php
//if something was posted
if(!empty($_POST)){
    //start an output var
    $output = array();

    //do any processing here.
    $output['message'] = "Success!";

    //send the output back to the client
    echo json_encode($output);
}

最好使用 2 个文件,一个供用户加载启动 ajax 调用,一个页面处理 ajax 调用。发送数组的工作方式相同,只需将获取文本框值替换为发送数组即可。

于 2013-04-24T00:42:55.363 回答
0

这是您打开页面时发生的情况 ( index.php)

  1. 发出GET请求index.php并返回内容。数组中没有值,因此您的行什么也不做。$_POSTprint_r()
  2. 执行通过 AJAX向其发送POST请求的Javascript。index.php请注意,这是一个全新的请求,与原始GET. 该$_POST数组将在请求上填充,但响应被丢弃。

希望这将说明您可以做什么。

ajax.php

<?php
header("content-type: application/json");
exit(json_encode($_POST));

索引.php

<script>
const toSearchArray = ['some', 'array', 'with', 'values'];
$.post('ajax.php', {
  variable: toSearchArray
}).done(data => {
  console.log(data) // here you will see the result of the ajax.php script
})
</script>
于 2013-04-24T00:43:21.480 回答
0

而不是将变量 toSearchArray 声明为数组。将其视为一个 javascript 对象。var toSearchArray = {}。

于 2020-04-09T05:38:25.717 回答
-1

好吧,当涉及到数组时,我认为这不是正确的方法,请参阅您需要在 javascript 中使用 JSON 编码,然后在 php 中使用 JSON 解码 请参阅此问题Pass Javascript Array -> PHP

于 2013-04-24T00:20:29.467 回答