我正在尝试运行一个网站,我正在使用Ajax / Jquery,以便与PHP脚本进行通信,而PHP脚本又应返回特定数据,具体取决于我在html网站上选择的选项。我已经设法将从网站发送的数据发送到php脚本,我已经设法在我选择的DIV中显示结果,但我似乎无法改变从PHP脚本发回的内容。
所以,这是我到目前为止所得到的(对于可能很糟糕的代码感到抱歉,我是ajax,jquery和bootstrap的新手):
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<head>
<script>
$("document").ready(function(){
$("#kco_settings").submit(function(event)
{
$("#result").html('');
var data = {
"action" : "generate_kco"
};
data = $(this).serialize() + "&" + $.param(data);
$.ajax({
type:"POST",
dataType:"json",
url:"_kco/checkout.php",
data:data,
success:function(data){
$("#result").html(data["json"]);
alert("Success!" + data["json"]);
}
})
return false;
});
});
</script>
</head>
<body>
<?php
require_once 'src/Klarna/Checkout.php';
session_start();
?>
<div class="row">
<div class="col-lg-3"></div>
<div class="col-lg-6">
<center> <h1> KCO </h1> </center>
</div>
<div class="col-lg-3"></div>
</div>
<div class="row">
<form name="kco_settings" id="kco_settings" method="POST">
<div class="col-lg-3 border-custom kco-customize-box">
<div class="form-group" id="kco-settings">
<div class="row">
<div class="col-lg-12">
<label class="label-custom" for="kco_country"> Country/Language setting </label>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<label class="radio-inline">
<input type="radio" name="kco_country" value="se" checked> SV-SE </input>
</label>
<label class="radio-inline">
<input type="radio" name="kco_country" value="sv_fi"> SV-FI </input>
</label>
<label class="radio-inline">
<input type="radio" name="kco_country" value="fi"> FI </input>
</label>
<label class="radio-inline">
<input type="radio" name="kco_country" value="no"> NO </input>
</label> <br>
<label class="radio-inline">
<input type="radio" name="kco_country" value="de"> DE </input>
</label>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<label class="label-custom" for="kco_gui"> GUI Setting </label>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<label class="radio-inline">
<input type="radio" name="kco_gui" value="desktop" checked> Desktop Layout </input>
</label>
<label class="radio-inline">
<input type="radio" name="kco_gui" value="mobile"> Mobile Layout </input>
</label>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<label class="label-custom" for="kco_amount"> Amount of order</label> <input type="text" name="kco_amount" class="form-control">
</div>
</div>
<div class="row">
<div class="col-lg-12">
<button type="submit" id="create_kco_btn" class="btn btn-custom"> Generate KCO </button>
</div>
</div>
</div>
</div>
</form>
<div class="col-lg-6" id="result" class="border-customer">
<div style="width:750px">
<?php //echo $snippet; ?>
</div>
</div>
<div class="col-lg-3"></div>
</div>
</body>
&#13;
<?php
if (is_ajax()) {
if (isset($_POST["action"]) && !empty($_POST["action"])) { //Checks if action value exists
$action = $_POST["action"];
switch($action) { //Switch case for value of action
case "generate_kco": test_function(); break;
}
}
}
//Function to check if the request is an AJAX request
function is_ajax() {
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}
function test_function(){
$return = $_POST;
//$return = $_POST["kco_gui"];
//$return = $_POST["kco_country"];
$return["json"] = json_encode($return);
echo json_encode($return);
}
我在本地运行时收到以下回复:
{&#34; kco_country&#34;:&#34; SE&#34;&#34; kco_gui&#34;:&#34;桌面&#34;&#34; kco_amount&#34;:& #34;&#34;&#34;动作&#34;:&#34; generate_kco&#34;}
但我想将这些数据用于PHP脚本,并根据用户选择的内容发回不同的信息。现在除了上面提到的字符串之外,我什么也做不了。
当我尝试注释掉($return = $_POST["kco_gui"];)
的代码时,我什么都没有得到。如果我尝试将数据发送到除Json以外的任何其他内容,我什么也得不到。
我可能完全错误地接近这个,我不知道。任何提示和帮助表示赞赏。 :)
对不起,如果格式是废话,这是我的第一篇帖子。此外,此代码是我正在构建的更大网站的一部分,因此这里没有引用引导程序,但这应该不重要,我想(并希望)。
非常感谢!
//杰克