[英]How to pass a nested array using php cURL
我正在通過jQuery通過.val()方法收集表單帖子,驗證這些帖子並將錯誤傳遞回表單輸入,或者將true傳遞給調用PHP cURL腳本的。$ post方法。
典型的var如下所示:
var industs_servedVal = $('#industs_served').val();
在這種情況下,它是一個選擇多個表單字段。 我知道jQuery中的.val()方法傳遞了一個數組,因此這似乎是合理的,我是說var也將收集該數組。
然后,我將var industs_servedVal傳遞給$ .post這樣的方法(然后滑動一個感謝信):
$.post('../inc/form_sendsf_modified.php', {
othervars: othervarsVal;
industs_served: industs_servedVal,
}, function(data) {
$('#sendEmail').slideUp('slow', 'swing', function() {
$('#sendEmail').replaceWith('<h3>Thank you!</h3><p>Your message was sent to us. We\'ll get back to you as soon as we can.</p>');
});
});
}
return false;
});
文件“ form_sendSF_modified.php”處理這些帖子,並使用cURL發送到Salesforce Cloud。 這有效; 但是, 問題是Salesforce將“數組”顯示為為多字段數組接收的值,而不是數組值本身 。 我收集陣列並將其傳遞給銷售人員的方式上是否存在問題? foreach循環是否能夠將多個字段數組值以及其他值作為數組發送,如代碼所示。
$post_data['00N70000002U2fA'] = $_POST['industs_served']; //Array
//$otherpost data
//cURL CODE for post
//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}
//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);
//create cURL connection to SFDC
$curl_connection = curl_init('https://www.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8');
//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);
//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);
//perform our request
$result = curl_exec($curl_connection);
//show information regarding the request
//print_r(curl_getinfo($curl_connection));
//echo curl_errno($curl_connection) . '-' .
curl_error($curl_connection);
//close the connection
curl_close($curl_connection);
//End cURL
您可以使用數組本身(但會將Content-Type標頭更改為multipart / form-data)。
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_data);
或者,您可以將構建字符串與http_build_query函數一起使用,請參見示例#3。
用這個
$post = "ac=on&p=1&pr[]=0&pr[]=1&a[]=3&a[]=4&pl=on&sp[]=3&ct[]=3&s=1&o=0&pp=3&sortBy=date";
parse_str($post,$fields);
$url = 'http://example.com/';
//open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
//execute post
$result = curl_exec($ch);
//close connection
curl_close($ch);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.