Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery Ajax向PHP脚本发送javascript变量_Javascript_Php_Jquery_Ajax - Fatal编程技术网

使用jQuery Ajax向PHP脚本发送javascript变量

使用jQuery Ajax向PHP脚本发送javascript变量,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在尝试使用ajax将JavaScript变量发送到php脚本。这是我第一次使用ajax,我不知道哪里出了问题。这是我的密码 function selectcat(v) { $.ajax({ type: "GET", url: "myurl.php", dataType: "script", data: { "selected_category" : v} }).done(function() {

我正在尝试使用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>
    选项1 选项2
这是ajax php文件

<?php
session_start();
$ctgry = $_GET['selected_category'];
$_SESSION['select_cat'] = $ctgry;
?>

嗨,这就是我调用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);
    }
  });

我希望这有帮助

您需要删除
数据类型:“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";
        });
 }
$('#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;
            }
        }
    });
});
<?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;
dataType:“script”
在这里没有意义,我认为您需要
json
或者将其留空

如果您尝试使用
$\u get['selected\u category']

我建议您进行此修改以帮助自己进行调试

$.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);
    }
})

AJAX比听起来容易。你只需要看几个好例子

试试这些:


上面的例子说明了一些事情:

(1) AJAX请求有四种格式—完整的
$.AJAX()
结构和三种快捷方式结构(
$.post()
$.get()
、和
$.load()

在您精通AJAX之前,我建议您使用格式正确的
$.AJAX()
代码块,这就是上面的示例所演示的。这样的代码块如下所示:

 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";
        });
 }
$('#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;
            }
        }
    });
});
<?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;
(2) 在
$.ajax()
代码块中,
数据:
行指定发送到PHP处理器文件的数据

(3)
dataType:
行指定ajax代码块希望从PHP处理器文件接收回的数据类型。除非另有规定,否则默认数据类型为html

(4) 在PHP处理器文件中,数据通过
echo
命令返回到AJAX代码块。无论该数据是以html、文本还是json的形式返回,它都会
echo
返回到AJAX例程,如下所示:

 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";
        });
 }
$('#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;
            }
        }
    });
});
<?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;
javascript/jQuery:

<ul class="cat">
    <li class="opt" value="TheFirstOption">option1</li>
    <li class="opt" value="The Second Option">Option 2</li>
</ul>
$('.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
    $val = $_POST['selected_category'];
    echo 'You selected: ' . $val;
PHP:

<ul class="cat">
    <li class="opt" value="TheFirstOption">option1</li>
    <li class="opt" value="The Second Option">Option 2</li>
</ul>
$('.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
    $val = $_POST['selected_category'];
    echo 'You selected: ' . $val;

如果在
success
函数中重定向到另一个页面,那么使用ajax没有多大意义。您能提供更多关于您正在做什么以及如何调用函数的信息/上下文吗?到底出了什么问题?@jeroen页面上有一堆选项,它们都可以点击调用ajax函数。我需要用户单击的值,但我不想使用单选按钮。然后我需要将该值放入一个php变量中,这就是ajax脚本所做的。当您说“尝试发送JavaScript变量”时,我假设您的代码中有一个定义的变量,您希望传递该变量。如果是这种情况,那么您只需要将其放入一个对象中,并通过
data
方法发送它。。然而,我没有看到你提到的这个变量,而是看到了“v”。。假设这是您的变量,这不是发送到您的php吗?@CodeGodie v是从元素clickedhaha接收到的参数。。数字。。我们会等的。天啊,好像有人在那里发布了一个模板答案。。不管所以你试着移除那条线,但问题仍然存在。。。你的PHP看起来不错。。一定还有别的问题。你的
myurl.php
文件在哪里?它是否与脚本位于同一目录中?JS和PHP之间存在不匹配,在JS上使用GET,在PHP中尝试从中读取所选类别POST@AgustinMu尼奥斯爱你!你说得太对了——谢谢你抓住了那个明显的错误。那一定是CodieGodie告诉我的…!-修正了一个讨厌把所有的时间都花在一个答案上,却因为一个愚蠢的错误而彻底失败的人是的,先生。。它们要么都需要被获取,要么都需要发布