嗨,我有这个简单的代码:
var datastring="123";
$.ajax({
url: 'actualizarimagen.php',
type: 'post',
dataType: 'text',
data: datastring,
cache: false,
success: function(response){
$('.msg1').html(response);
},
error: function(response){
$('.msg1').html(response);
}
});
并且在actualizarimagen.php中:
$desc_larga = print('<pre>') & print_R($_POST) & print('</pre>');
$insertSQL = sprintf("INSERT INTO prueba (texto) VALUES ($desc_larga)");
我收到成功消息,但在数据库中总是保存1.我尝试更改所有内容,dataType,成功,错误,完成功能但它不起作用。我正在寻找,但任何答案都无法帮助我。
感谢。
编辑:添加回复
答案 0 :(得分:5)
您的datastring
应包含编码为application/x-www-form-urlencoded
例如:var datastring="foo=123";
最好不要将字符串传递给jQuery。传递一个对象,让它为你处理编码。
例如:data: { "foo": "123" }
答案 1 :(得分:1)
发送数据,有格式要遵循。 像
var datastring="var1=123&var2=abcd";
或
var datastring=[{name:'var1',value:123},{name:'var2',value:'abcd'}];
第二种格式(对象名称值数组)类似于<input type="text" name="var1" value="123">
,其中html输入元素具有要发布的名称和值。
然后,您可以通过以下方式获取值:
$_POST['var1']
或
$_POST['var2']
答案 2 :(得分:1)
数据强> Object,String
要发送到服务器的数据。如果不是字符串,它将转换为查询字符串。它附加到GET请求的URL。请参阅processData选项以防止此自动处理。对象必须是键/值对。如果value是一个数组,jQuery会根据传统设置的值使用相同的键序列化多个值(如下所述)。
您只是将123发送到服务器。
应该是
var datastring="myField=123";
或
var datastring = {"myField" : 123 };
使用PHP,你会读到它
$_POST["myField"]
答案 3 :(得分:1)
轻松实现这一目标的一个例子可能是:
<强> JS:强>
var datastring="123";
$.post('actualizarimagen.php', { datastring:datastring }, function(data){
if(data != 0){
$('.msg1').html('correcto');
} else {
$('.msg1').html('error');
}
});
在您的actualizarimagen.php中:
if($_POST() && isset($_POST['datastring'])){
/* Connect to DB */
$link = mysql_connect('server', 'user', 'pwd');
if (!$link) {
// No connection
print(0);
exit();
}
$db = mysql_select_db('db', $link);
if (!$db) {
// DB selection error
print(0);
exit();
}
/* Sanitize the value */
$datastring = mysql_real_escape_string($_POST['datastring']);
// I don't understand here what you tried to do with $dec_larga but this is what I thought
$desc_larga = "<pre>".$datastring."</pre>";
/* Insert to DB */
$sql = "INSERT INTO prueba (texto) VALUES ('$desc_larga')";
if(mysql_query($sql,$link)){
// Everything is Ok at this point
print(1);
} else {
// Error happened in your SQL query
print(0);
}
}
答案 4 :(得分:0)
在ajax电话中:
data: my_var : datastring,
在php中:
$desc_larga = '<pre>'.$_POST['my_var'].'</pre>';
答案 5 :(得分:0)
尝试替换
type: "post",
带
type: "POST",
并且您的数据字符串应如下所示:
single=Single&multiple=Multiple&multiple=Multiple3&check=check2&radio=radio1
如下所述:
答案 6 :(得分:0)
var datastring = "123";
$.ajax({
url: 'actualizarimagen.php',
type: 'post',
dataType: 'text',
data: {data : datastring},
cache: false
}).always(function(response) {
$('.msg1').html(response);
});
并且在actualizarimagen.php中:
$desc_larga = '<pre>'.$_POST['data'].'</pre>';
$query = '"INSERT INTO prueba (texto) VALUES ('.$desc_larga.')"';