如果我有带有id leavepost
和隐藏的div id display
的文本区域在 # 之后,我得到了隐藏的div 和变量名称中带有 # 的单词但是当我想通过 ajax 发送到 sul 文件时,它会发送数组。怎么了?
$("#leavepost").keypress(function(event) {
var key = (event.keyCode ? event.keyCode : event.which);
if (key == 35) {
$('#display').show();
$('#leavepost').on('keyup', function() {
var name = $(this).val().match(/(^|'s)(#[a-z'd-]+)/ig);
$.ajax({
type: "POST",
url: "d/sul.php",
data: { su: name },
success: function(sss)
{
$('#display').html(sss);
}
});
}).keyup();
}
});
在 sul 内部.php我有:
echo $_POST['su'];
$u = mysqli_real_escape_string($con, $_POST['su']);
错误:
警告:mysqli_real_escape_string() 期望参数 2 为字符串, 给定数组
.match()
返回匹配测试的数组。
// for example:
"xzxzxz".match(/z/gi) // => [z,z,z]
"xzxzxz".match(/z/gi)[0] // => "z"
使用.match(/(^|'s)(#[a-z'd-]+)/ig)[0]
获取第一个匹配项。
或者,您可以.match(/(^|'s)(#[a-z'd-]+)/ig).join(",")
以字符串形式发送所有测试匹配项。
// for example
"xzxzxz".match(/z/gi).join(",") // => "z,z,z"
"xzxzxz".match(/z/gi).join("") // => "zzz"
你在这个代码中使用var name = $(this).val().match(/(^|'s)(#[a-z'd-]+)/ig);
String.prototype.match(),这个方法返回:
包含整个匹配结果和任何匹配结果的数组 括号捕获的匹配结果,如果没有,则为 null 比赛。
所以你需要像处理数组一样在 php 代码中使用$_POST['su'];
变量
这是因为JavaScript match
函数返回一个数组。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/match
您需要从该数组中提取name
部分。 console.log(name)
将为您提供数组的结构。