gpt4 book ai didi

javascript - 使用ajax传递php变量

转载 作者:行者123 更新时间:2023-12-03 07:00:59 27 4
gpt4 key购买 nike

我一直在尝试让 php 重命名 S3 存储桶 中的图像。分为三个阶段

  1. 上传图片(您可以查看我之前提出的问题以查看我的解决方案)我已经包含了下面使用的代码。
  2. 使用 ajax 获取我想要的文件名称(用户 ID)并将其传递给 PHP 重命名脚本。
  3. 运行重命名脚本。

第二步给我带来了问题。如果我将名称硬编码到 PHP 脚本中,那么它将找到源文件并重命名它。但是我无法让它使用从页面中提取的变量重命名文件。

这是HTML按钮代码

            <input type="file" id="file-chooser" />
<button onclick= "pass()" id="upload-button">Upload to S3</button>
<div id="results"></div>

这是JS代码

    <script type="text/javascript">
var bucket = new AWS.S3({params: {Bucket: 'MY BUCKET'}});

var fileChooser = document.getElementById('file-chooser');
var button = document.getElementById('upload-button');
var results = document.getElementById('results');
button.addEventListener('click', function() {


var file = fileChooser.files[0];
if (file) {
results.innerHTML = '';
var filename = file.name;
var params = {Key: file.name, ContentType: file.type, Body: file};
bucket.upload(params, function (err, data) {

results.innerHTML = err ? 'ERROR!' : 'UPLOADED';
ajax_post();
});
} else {
results.innerHTML = 'Nothing to upload.';
}
}, false);

function pass() {
$.get("test.php");
return false;
}

function ajax_post() {
var ref = new

Firebase("https://MY FIREBASE .firebaseio.com/");
var authData = ref.getAuth();

// Create our XMLHttpRequest object
var fileChooser = document.getElementById('file-chooser');
var file = fileChooser.files[0];
var filename = file.name;
var userID = authData.uid;


var userID = USERS USER ID;
//alert($(this).attr('id'));
$.ajax({
type: "POST",
url: 'test.php',
data: { userID : userID },
data: { filename : filename },
success: function (data) {
alert("success!");
}
};
pass();
}

</script>

这是 PHP。

    <?php
require 'vendor/autoload.php';
use Aws\S3\S3Client;


$sourceBucket = "MY BUCKET";
$sourcename1 = $_POST['filename'];
$targetKeyname = $_POST['userID'];
$targetBucket = "MY BUCKET";


$s3 = S3Client::factory(array(
'key' => "MY KEY",
'secret' => "MY SECRET KEY"
));

$s3->copyObject(array(
'Bucket' => $targetBucket,
'Key' => $targetKeyname,
'CopySource' => "{$sourceBucket}/{$sourcename}",
));

?>

编辑以添加我一直在进行一个又一个的测试。如果我将变量硬编码到 PHP 文件中,它就可以工作。如果我将变量硬编码到 JS 脚本中,则会失败。 ajax 正在运行 php 文件,只是没有将变量传递给它。我已经尝试过在 PHP 端使用或不使用 ISSET,但每次都无法获取变量。

有什么想法吗?

最佳答案

我怀疑这是您的问题var userID = USERS USER ID;我不确定该信息来自何处。但如果不查看其来源的 html/js,很难确定问题所在。

如果其文本输入的 id 为 userID,则应该类似于:

<input type="text" name="userID" id="userID">

js:

var userID = $("#userID").val();

AJAX 更新

BOTH数据合并到一个对象中:

                        data:  { userID : userID },
data: { filename : filename },

将成为

data:  { userID : userID , filename : filename },

关于javascript - 使用ajax传递php变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37057278/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com