如何发布带有'&'标志的字符串到一个PHP文件。
我有一个jscript:
function saveRow(oTable, nRow) {
var jqInputs = $('input', nRow);
oTable.fnUpdate(jqInputs[0].value, nRow, 0, false);
oTable.fnUpdate(jqInputs[1].value, nRow, 1, false);
oTable.fnUpdate(jqInputs[2].value, nRow, 2, false);
oTable.fnUpdate(jqInputs[3].value, nRow, 3, false);
oTable.fnUpdate('<a class="edit" href="">Edit</a>', nRow, 4, false);
oTable.fnUpdate('<a class="delete" href="">Delete</a>', nRow, 5, false);
oTable.fnDraw();
var val1 = jqInputs[0].value;
var val2 = jqInputs[1].value;
var val3 = jqInputs[2].value;
var val4 = jqInputs[3].value;
var dataString = 'pairchannels=1' + '&eventname=' + val1 + '&datetime=' + val2 + '&pairedchannel=' + val3 + '&realchannel=' + val4;
if (val1 == '' || val2 == '' || val3 == '' || val4 == '') {
alert(jqInputs[1].value);
} else {
alert(val1);
$.ajax({
type: "POST",
url: "process.php?",
data: dataString,
cache: false,
success: function(result) {
alert(dataString);
}
});
}
return false;
}
将POST发送到process.php:
...
else if(isset($_POST['pairchannels'])){
$this->procPairChannels();
}
...
function procPairChannels(){
global $session, $form;
/* Account edit attempt */
$retval = $session->procPairChannels($_POST['eventname'], $_POST['datetime'], $_POST['pairedchannel'], $_POST['realchannel']);
}
但不是$ _POST ['eventname']中的整个字符串,而是“波斯尼亚和黑塞哥维那”,php将字符串拆分为“&amp;”。这是第一次发生这样的错误,因为我从未有过“&amp;”在我的任何一个字符串中,直到现在。
我该怎么办才能处理这种字符串?
答案 0 :(得分:0)
您需要正确编码您在数据字符串中发送的值,以便它们不会被解释为URL中的特殊字符(&
分隔键值对...):
最简单的方法是让jQuery通过发送对象而不是字符串来处理它:
// Maybe a name change to dataObject...
var dataString = {
pairchannels: 1,
eventname: val1,
// etc.
};
如果您想自己构建查询字符串,则需要对每个值使用encodeURIComponent()
。