我正在尝试使用ajax将JavaScript变量发送到php脚本。这是我第一次使用ajax,我不知道哪里出了问题。这是我的代码
function selectcat(v) {
$.ajax({
type: "GET",
url: "myurl.php",
dataType: "script",
data: { "selected_category" : v}
}).done(function() {
window.location.href = "http://mywebsite.com";
});
}
感谢提供的所有帮助
这是HTML
<ul class="cat">
<li class="opt" onclick="selectcat('option1')">option1</li>
<li class="opt" onclick="selectcat('option2')">Option 2</li>
</ul>
这是ajax php文件
<?php
session_start();
$ctgry = $_GET['selected_category'];
$_SESSION['select_cat'] = $ctgry;
?>
您需要删除dataType: "script"
,因为您只是在发送数据。这样做:
function selectcat(v) {
$.ajax({
type: "GET",
url: "myurl.php",
data: {"selected_category": v}
}).done(function(result) {
console.log(result);
//window.location.href = "http://mywebsite.com";
});
}
嗨,这就是我所做的调用ajax请求的方法您可以使用以下代码发布数据或加载文件:
$("#button click or any other event").click(function(){
try
{
$.post("my php page address",
{
'Status':'6',
'var one':$("#myid or .class").val().trim(),
'var 2':'var 2'
}, function(data){
data=data.trim();
// alert(data);
// this data is data that the server sends back in case of ajax request you
//can send any type of data whether json or or json array or any other type
//of data
});
}
catch(ex)
{
alert(ex);
}
});
我希望这能有所帮助!
AJAX比听起来更容易。你只需要看看几个好的例子。
试试这些:
的一个简单例子
更复杂的示例
根据下拉列表1 中的选择填充下拉列表2
上面的例子展示了一些东西:
(1) AJAX请求有四种格式-完整的$.ajax()
结构和三种快捷方式结构($.post()
、$.get()
和$.load()
)
在您非常擅长AJAX之前,我建议您使用格式正确的$.ajax()
代码块,这就是上面的示例所展示的。这样的代码块看起来像这样:
$('#divID').click({
$.ajax({
type: 'post',
url: 'contact.php',
dataType: 'json',
data: 'email=' + form.email.value
}).done(function(data) {
if ( typeof(data) == 'object' ) {
if ( data.status == 'valid') {
form.submit();
} else if(data.status !=='valid' {
alert('The e-mail address entered is wrong.');
return false;
} else {
alert('Failed to connect to the server.');
return false;
}
}
});
});
(2) 在$.ajax()
代码块中,data:
行指定发送到PHP处理器文件的数据。
(3) dataType:
行指定ajax代码块期望从PHP处理器文件接收回的数据类型。默认的dataType是html,除非另有指定。
(4) 在PHP处理器文件中,数据通过echo
命令返回到AJAX代码块。无论该数据是以html、text还是json的形式返回,它都是echo
返回到AJAX例程,如下所示:
<?php
//perform MySQL search here. For eg, get array $result with: $result['firstname'] and $result['lastname']
$out = '<div id="myresponse">';
$out .= 'First Name: <input type="text" value="' .$result['firstname']. '" />';
$out .= 'Last Name: <input type="text" value="' .$result['lastname']. '" />';
$out .= '</div>';
echo $out;
请自己尝试上面的几个例子,你会看到它是如何工作的。
不需要使用json
来发送/返回数据。然而,json
是发送数组数据的一种有用格式,但正如您所看到的,您可以在PHP端构建一个完整的html响应,并回显完成的标记。
所以,您只需要echo
返回一些数据。PHP文件的任务是:
(1) 从AJAX例程接收数据
(2) 在某种查找中使用这些数据(通常在数据库中),
(3) 构建响应,以及
(4) echo
(NOT return
)返回AJAX例程的success:
或.done()
函数的响应。
您的示例可以更改为类似以下内容:
HTML:
<ul class="cat">
<li class="opt" value="TheFirstOption">option1</li>
<li class="opt" value="The Second Option">Option 2</li>
</ul>
javascript/jQuery:
$('.opt').click(function(){
var v = $(this).val();
$.ajax({
type: "POST",
url: "myurl.php",
dataType: "html",
data: { "selected_category" : v}
}).done(function(data) {
$('#div_to_insert_the_response').html(data);
});
});
PHP:
<?php
$val = $_POST['selected_category'];
echo 'You selected: ' . $val;
dataType: "script"
在这里没有意义,我认为您想要json
或将其留空。
如果您尝试使用$_GET['selected_category']
获取变量,那么您的PHP脚本应该可以工作
我建议您进行此修改以帮助自己调试
$.ajax({
type: "GET",
url: "myurl.php",
data: { "selected_category" : v},
success: function(data){
console.log(data);
// you can also do redirection here (or in complete below)
},
complete: function(data){
// when request is done, independent of success or error.
},
error: function(data){
// display things to the user
console.error(data);
}
})