简体   繁体   English

Jquery AJAX发布到PHP

[英]Jquery AJAX post to PHP

OK i've got my json string built but i'm not sure what to do next?? 好的,我已经建立了我的json字符串,但我不知道下一步该做什么?

$('#submit').live('click',function(){ 

                var dataString = '[';
                    $('#items tr').not(':first').each(function(){
                        var index = $('#items tr').index(this);
                        var supp_short_code=$(this).closest('tr').find('.supp_short_code').text();
                        var project_ref=$(this).closest('tr').find('.project_ref').text();
                        var om_part_no=$(this).closest('tr').find('.om_part_no').text();
                        var description=$(this).closest('tr').find('.description').text();
                        var cost_of_items=$(this).closest('tr').find('.cost_of_items').text();
                        var cost_total=$(this).closest('tr').find('.cost_total').text();
                        dataString += '{"row":"' + index + '", "supp_short_code":"' + supp_short_code + '", "project_ref":"' + project_ref + '", "om_part_no":"' + om_part_no + '", "description":"' + description + '", "cost_of_items":"' + cost_of_items + '", "cost_total_td":"' + cost_total + '"}';
                    });
                    dataString += ']';

                $.ajax
                    ({
                    type: "POST",
                    url: "order.php",
                    data: dataString,
                    cache: false,
                    success: function()
                        {
                            alert("Order Submitted");
                        }
                    });
            });

In my php file i was attempting to write the dataString to a text file so i could see its coming through ok but nothing was in the text file!? 在我的PHP文件中,我试图将dataString写入文本文件,所以我可以看到它通过确定但文本文件中没有任何内容!? Am i doing something wrong client side or PHP side, my php code: 我做错了客户端或PHP端,我的PHP代码:

<?php
    $stringData = $_POST['dataString']; 
    $myFile = "testFile.txt";
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh, $stringData);
    fclose($fh);
?>

This should do it: 这应该这样做:

...
$.ajax({
    type: "POST",
    url: "order.php",
    data: { 'dataString': dataString },
    cache: false,
    success: function()
        {
            alert("Order Submitted");
        }
    });

You may try to verify: 您可以尝试验证:

<?php
    $stringData = $_POST['dataString']; 
    echo $stringData;
?>

Why don't you try constructing your data like this 你为什么不尝试像这样构建你的数据

var postData = {};
$('#items tr').not(':first').each(function(index, value) {
    var keyPrefix = 'data[' + index + ']';
    postData[keyPrefix + '[supp_short_code]'] = $(this).closest('tr').find('.supp_short_code').text();
    postData[keyPrefix + '[project_ref]'] = $(this).closest('tr').find('.project_ref').text();
    // and so on
});

Then in your AJAX call 然后在你的AJAX调用中

data: postData,

Now your PHP script can process the data as a multi-dimensional array 现在,您的PHP脚本可以将数据作为多维数组处理

<?php
if (isset($_POST['data']) && is_array($_POST['data'])) {
    foreach ($_POST['data'] as $row => $data) {
        echo $data['supp_short_code'];
        echo $data['project_ref'];
        // and so on
    }
}

First convert the json object to a string in js like this: 首先将json对象转换为js中的字符串,如下所示:

var json_string=JSON.stringify(json_object);

Then, pass it to PHP as a string and then in php decode it, like this : 然后,将其作为字符串传递给PHP,然后在php中解码它,如下所示:

<?php  
    $map = json_decode($_POST['json_string']); 
?> 

I hope this helps anyone just finding this thread... 我希望这有助于任何人找到这个帖子......

The problem will be that you are attempting to access a POST variable called "dataString" that does not exist. 问题是您正在尝试访问一个名为“dataString”的POST变量,该变量不存在。 Just because you set the "data" property to the contents of a variable called "dataString" does not mean that your post variable will be called "dataString". 仅仅因为您将“data”属性设置为名为“dataString”的变量的内容并不意味着您的post变量将被称为“dataString”。

You could try this: 你可以试试这个:

data: { "dataString": dataString },

This passes an object to the jQuery function that has a property called "dataString" and the value of your actual data string. 这会将对象传递给jQuery函数,该函数具有名为“dataString”的属性以及实际数据字符串的值。 jQuery will take all the properties from this object (in this case just one) and set them as post variables on the HTTP request that it will eventually send to your PHP application. jQuery将获取此对象的所有属性(在本例中只是一个),并将它们设置为最终将发送到PHP应用程序的HTTP请求的post变量。 This allows you to access the data via the $_POST["dataString"] call. 这允许您通过$ _POST [“dataString”]调用访问数据。

Steve 史蒂夫

I have problems when use: 我在使用时遇到问题:

url: "/folder/form.php",

And i have to use: 我必须使用:

url: "folder/form.php",,

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM