javascript如何在不使用AJAX的情况下传递数据,例如从HTML表传递数据?
我缺乏对如何实际提取数据,格式化(可能进入json)以及传递数据的理解。
我正在尝试将数据传递给php函数,该函数将文件发送给用户下载。 (根据我的理解,ajax无法处理的事情)
编辑 - 请举例说明发布一些相当复杂的数据。
EDIT2 - 一个例子......
我通过ajax响应对象填充表。获取这些数据的好方法我将格式化为可以通过表单发送到php文件的表单?
function getSalesByDeviceComplete(responseObj)
{
var cashTotal = parseInt(responseObj.data[0].cash_total).toFixed(2);
var creditTotal = parseInt(responseObj.data[0].credit_total).toFixed(2);
var grandTotal = (parseInt(responseObj.data[0].cash_total) + parseInt(responseObj.data[0].credit_total)).toFixed(2);
htmlStr += '<ul>';
htmlStr += ' <li>';
htmlStr += ' <table class="ui-widget ui-widget-content contentTable">';
htmlStr += ' <thead>';
htmlStr += ' <tr class="ui-helper-reset ui-widget-header">';
htmlStr += ' <th class="contentTableKey">Payment Device</th>';
htmlStr += ' <th class="contentTableValue">Sales</th>';
htmlStr += ' </tr>';
htmlStr += ' </thead>';
htmlStr += ' <tbody>';
htmlStr += ' <tr>';
htmlStr += ' <td class="contentTableKey">Credit Card</td>';
htmlStr += ' <td class="contentTableValue">$'+creditTotal+'</td>';
htmlStr += ' </tr>';
htmlStr += ' <tr>';
htmlStr += ' <td class="contentTableKey">Cash</td>';
htmlStr += ' <td class="contentTableValue">$'+cashTotal+'</td>';
htmlStr += ' </tr>';
htmlStr += ' </tbody>';
htmlStr += ' <tfoot>';
htmlStr += ' <tr>';
htmlStr += ' <td></td>';
htmlStr += ' <td id="salesTotal" class="contentTableValue">$'+grandTotal+'</td>';
htmlStr += ' </tr>';
htmlStr += ' </tfoot>';
htmlStr += ' </table>';
htmlStr += ' </li>';
htmlStr += '</ul>';
$("#contentData").html(htmlStr);
}
响应对象看起来像......
<response_GetSalesByDevice>
<data>
<cash_total>0.00</cash_total>
<credit_total>0.00</credit_total>
</data>
<success>1</success>
</response_GetSalesByDevice>
唉,有几个响应对象 比这更复杂。
答案 0 :(得分:4)
通过浏览器将表单数据发布到PHP脚本,而不是使用异步HTTP请求。
答案 1 :(得分:3)
它“使用”的方式(当然还是非常新的):
答案 2 :(得分:1)
如果“没有AJAX”是指不使用XMLHttpRequest,那么最常见的方法是填写表单中的隐藏字段。
Javascript可以更改隐藏字段,然后当用户像往常一样提交表单时,隐藏值也会被传递。
这可以用于收集屏幕大小等统计信息,这些信息非关键,可以在启用Javascript时传递,如果没有,则可以传递。
答案 3 :(得分:0)
你似乎对AJAX和JSON是/做什么有了一些交叉的理解,或者我很可能不明白你的问题是什么意思。 如果您不想使用ajax,则必须使用正常提交,就像我建议的两个人一样。
但是,如果您要发送相对少量的数据,则可以使用ajax向您的PHP脚本发送GET请求,然后将使用文件进行响应。类似的东西:
http://yourserver.com/test.php?getVariable=29472938472
Test.php脚本查看get变量并返回关联的文件。 完全可以使用AJAX。
如果我走错了路,请告诉我。
答案 4 :(得分:0)
您可以通过常规方式通过表单发帖 但是,表单的目标是隐藏的iframe。这样,您可以保留当前页面,并以通常的浏览器方式处理服务器返回的文件。
答案 5 :(得分:0)
不应直接调用数据,而应调用包含以下内容的php文件:
/myphpfilethatgetsstuff.php http://mydatadomain.com/?q=getmesomexmlplease“; $ json = file_get_contents($ jsonurl,0,null,null); $ json_output = json_decode($ json);
echo "<pre>";
print_r($json_output);
echo "</pre>";
?>
然后迭代创建文件和html输出的数据。
在主文件中使用此javascript:
$('div#results').load("http://mydomain.com/myphpfilethatgetsstuff.php");
将div放在某个地方:
<div id="results"></div>
和这个链接:
<a href="http://mydomain.com/mynewfilewithsessionid.xml">Your File</a>
答案 6 :(得分:0)
XMLHttpRequest对象的一种替代方法是通过页面中嵌入的iFrame进行异步调用。当无法使用xmlhttprequests时,这是一个记录在案的“AJAX”设计模式。 有一些jquery组件(即AJAX上传)使用这种方法。
此处的文档和示例: