我正在尝试学习JavaScript以编写Cordova代码。 我阅读了很多教程,但没有一个能帮助我解决这个问题。
我的cordova应用程序非常简单。只是一个文本框和2个按钮。两个Buttons都在我的服务器上调用PHP脚本。一个按钮将数据发送到PHP脚本以在MySQL数据库中插入文本字段的值,第二个按钮调用相同的脚本,并应将数据库的值写入我的cordova应用程序。
这是我的
<?PHP
$response = array();
require_once __DIR__ . '/db_config.php';
$db_link = mysqli_connect (
DB_SERVER,
DB_USER,
DB_PASSWORD,
DB_DATABASE
);
mysqli_set_charset($db_link, 'utf8');
if (!$db_link)
{
die ('keine Verbindung '.mysqli_error());
}
if(isset($_POST['action']) && $_POST['action'] == 'insert'){
$name = $_POST['name'];
$sql = "INSERT INTO test.testTable (name) VALUES ('$name')";
$db_erg = mysqli_query($db_link, $sql);
if (!$db_erg){
echo "error";
}else{
echo "ok";
}
}
if(isset($_POST['action']) && $_POST['action']=='read'){
$sql = "SELECT * FROM testTable";
$db_erg = mysqli_query( $db_link, $sql );
if (!$db_erg )
{
$response["success"] = 0;
$response["message"] = "Oops!";
echo json_encode($response);
die('Ungültige Abfrage: ' . mysqli_error());
}
while ($zeile = mysqli_fetch_array( $db_erg, MYSQL_ASSOC))
{
//$response["success"] = $zeile['pid'];
//$response["message"] = $zeile['name'];
$response[]=$zeile;
}
echo json_encode($response);
mysqli_free_result( $db_erg );
}
?>
这是我在cordova应用程序中的两个函数:
function getNameFromServer() {
var url = "appcon.php";
var action = 'read';
$.getJSON(url, function (returnedData) {
$.each(returnedData, function (key, value) {
var id = value.pid;
var name = value.name;
$("#listview").append("<li>" + id + " - " + name) + "</li>";
});
});
}
function sendNameToServer() {
console.log("sendNameToServer aufgerufen");
var url2send = "appcon.php";
var name = $("#Name").val()
var dataString = name;
console.log(dataString);
if ($.trim(name).length>0) {
$.ajax({
type: "POST",
url: url2send,
data: { action: 'insert', name: dataString },
crossDomain: true,
cache: false,
beforeSend: function () {
console.log("sendNameToServer beforeSend wurde aufgerufen");
},
success: function (data) {
if (data == "ok") {
alert("Daten eingefuegt");
}
if (data == "error") {
alert("Da ging was schief");
}
}
});
}
}
我的问题/问题:
sendNameToServer功能在这种情况下有效,数据将插入我的数据库中。但我从来没有得到警报(成功:从未打过电话)。
如何将"action = read"
传递给getNameFromServer()
函数中的PHP脚本?
第三个问题是有点偏离主题,但是这种代码艺术“保存”还是操作cordova应用程序和服务器之间的数据很简单?什么是更好的方式或如何加密传输?
答案 0 :(得分:0)
以下是您问题的一部分答案。
$.getJSON有第二个可选参数data
,它可以是您要传递给脚本的信息对象。
function getNameFromServer() {
$.getJSON("appcon.php", { action: 'read' }, function (returnedData) {
$.each(returnedData, function (key, value) {
var id = value.pid;
var name = value.name;
$("#listview").append("<li>" + id + " - " + name) + "</li>";
});
});
}
修改:由于您使用的是$.getJSON()
,因此请求方法为GET
,这意味着您必须在第三个{{1}中使用$_GET
你的PHP脚本中的语句。
if