这是我的HTML
<input x-webkit-speech id="mike" name="string" style="position: relative;" disabled lang="ru" />
然后当字段发生变化时,
此功能执行
$(document).ready(function(){
$('#mike').bind('webkitspeechchange',function()
{
a= $(this).val();
recognizeAjax(a);
}) ;
});
function recognizeAjax(string) {
var postData ="string="+string;
$.ajax({
type: "POST",
dataType: "json",
data: postData,
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType("application/json;charset=UTF-8");
}
},
url: 'restURL.php',
success: function(data) {
// 'data' is a JSON object which we can access directly.
// Evaluate the data.success member and do something appropriate...
if (data.success == true){
alert(data.message);
}
else{
alert(data.message+'hy');
}
}
});
这是我的PHP(请不要说我连接到DB的方式,它现在还没有完成)
<?php header('Content-type: application/json; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', true);
// Here's the argument from the client.
$string = $_POST['www'];
$quest=1;
$con=mysql_connect("localhost", "******", "*********") or die(mysql_error());
mysql_select_db("vocabulary", $con) or die(mysql_error());
mysql_set_charset('utf8', $con);
$sql="SELECT * FROM `text` WHERE event_name = 'taxi' AND quest_id = '".$quest."'";
$result = mysql_query($sql);
mysql_close($con);
while($row = mysql_fetch_array($result))
{
if ($string == htmlspecialchars($row['phrase']))
{
$data = array('success'=> true,'message'=>$row['phrase']);
// JSON encode and send back to the server
header("Content-Type: application/json", true);
echo json_encode($data);
exit;
break;
} else {
// Set up associative array
$data = array('success'=> false,'message'=>'aint no sunshine');
header("Content-Type: application/json", true);
echo json_encode($data);
exit;
break;
}
}
当我将dataType更改为&#34; text&#34;在javasript函数中 - 我收到了一个警告&#39; undifiend&#39;
但是,当它变成“json”时,我什么也得不到(chrome debuger什么也看不见)
我为这篇文章http://kunststube.net/frontback/设置了所有编码 我用简单的POST请求检查了它 - 它完美无缺。
json的问题。
有什么建议吗?
由于
答案 0 :(得分:0)
只需删除datatype="json"
位并将数据位更改为data: { "string": string }
之后尝试print_r(json_decode($_POST['string']));
。我很确定能为您提供数据。
确实删除了beforeSend
回调。
答案 1 :(得分:0)
我认为问题是代码var postData ="string="+string;
jQuery希望这是一个合适的JSON对象。
下一步:$string = $_POST['www'];
从您的帖子请求中获取名为“www”的参数,但上面的名称是“string”(至少)。
尝试(!)这个:
var getData ="www="+string;
$.ajax({
type: "POST",
dataType: "json",
data: null,
beforeSend: function(x) {
if(x && x.overrideMimeType) {
x.overrideMimeType("application/json;charset=UTF-8");
}
},
url: 'restURL.php?' + getData,
和服务器:
$string = $_GET['www'];
或者这个(php)
$string = $_POST['string'];
$stringData = json_decode($string);
// catch any errors ....
$quest=$stringData[....whatever index that is...];