当用户点击提交按钮时,我尝试让论坛提交一次以上。为什么?我试着在购物车中添加一个以上的idem,我使用的购物车软件不支持一次添加多个产品,我不想编辑核心代码。隐藏的论坛会有像'1,2,3'这样的产品ID,然后我需要JavaScript来分隔值并使用AJAX将每个值发布到购物车。我不是一个很好的JavaScript,但是我编写了我认为应该工作的内容,但它只是给我一个警告:'请求有问题。'两次。我看不出它有什么不妥,欢迎任何和所有的帮助和建议!代码如下:
JS
<script type="text/javascript">
function testResults (form) {
var product_id = form.product_id.value;
var quantity = form.quantity.value;
var brokenstring=product_id.split(",");
for ( var i in brokenstring )
{
var http_request = false;
function makePOSTRequest(url, parameters) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
// set type accordingly to anticipated content type
//http_request.overrideMimeType('text/xml');
http_request.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Cannot create XMLHTTP instance');
return false;
}
http_request.onreadystatechange = alertContents;
http_request.open('POST', url, true);
http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http_request.setRequestHeader("Content-length", parameters.length);
http_request.setRequestHeader("Connection", "close");
http_request.send(parameters);
}
function alertContents() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
//alert(http_request.responseText);
result = http_request.responseText;
document.getElementById('myspan').innerHTML = result;
} else {
alert('There was a problem with the request.');
}
}
}
var poststr = "product_id=" + encodeURI( brokenstring[i] ) +
"&quantity=" + encodeURI( quantity );
makePOSTRequest('post.php', poststr);
}
}
</script>
HTML
<form action="javascript:testResults(document.getElementById('myform'));" name="myform" id="myform">
<input type="text" name="product_id" id="product_id" />
<input type="hidden" name="quantity" id="quantity" value="1" />
<br />
<input type="submit" name="button" value="Submit" />
</form>
<span name="myspan" id="myspan"></span>
post.php中
<?php
print_r($_POST);
?>
答案 0 :(得分:2)
如果您要在购物车中添加两个商品,那么您是否应该使用相同的商品进行两个帖子?我可以在那里看到每个项目一个帖子。您没有考虑数量。但这不是问题。在这种情况下,这只是一个逻辑错误。
对于javascript方面,我建议你使用jQuery来处理ajax的东西,因为它会使你的生活方式比普通的javascript更容易,这可能不适用于所有浏览器。
这是与jQuery的POST方法相关的链接:http://docs.jquery.com/Post
希望有所帮助
答案 1 :(得分:0)
对于所有编程逻辑来说,多次发布表单而不是使用更复杂的表单。从我可以从您的代码中看到或理解的内容,您试图遍历您的splitted(brokenstring)字符串。你的循环不是在它应该的地方和方式构建的。无论如何,如果我是你,我会考虑迁移到另一个免费购物车o可能自己写一个。从我看到你可以通过这里的一些帮助这样做。