使用jQueryAjax向PHP脚本发送javascript变量


Sending a javascript variable to a PHP script using jQuery Ajax

我正在尝试使用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);
    }
})